我试图在我的第一个 View Controller 中使用 UITextField 的 .text 在我的第二个 View Controller 中的另一个 UITextField 的 .text 中,但是我的第一个 View Controller firstTField.text 结果在我的第二个 View Controller 中是 (null)即使我在我的第一个 View Controller 中打印了 _firstTField.text,它也打印出了输入的内容。
可能是什么问题?为什么为空? 有人可以指导我如何处理/解决这个问题吗?
FirstViewController.h
@property (weak, nonatomic) IBOutlet UITextField *firstTField;
SecondViewController.h
@property (weak, nonatomic) IBOutlet UITextField *secondTField;
SecondViewController.m
#import "FirstViewController.h"
- (void)viewDidLoad {
[super viewDidLoad];
FirstViewController *firstPage = [[FirstViewController alloc] init];
_secondTField.text = firstPage.firstTField.text;
}
最佳答案
我将假设 FirstViewController
继续到 SecondViewController
。您的代码有两件事会阻止 secondTField
设置其文本:
1) 您正在实例化FirstViewController
的新 实例,而不是引用您从中分离出来的实例。这个新的 FirstViewController
将不在 View 层次结构中,因此不会设置其文本字段。
2) 您需要在转场期间使用 NSString
将信息临时保存在 SecondViewController
中,同时将其加载到 View 层次结构中。
您的代码将如下所示:
FirstViewController.h
@property (weak, nonatomic) IBOutlet UITextField *firstTField;
SecondViewController.h
@property (weak, nonatomic) IBOutlet UITextField *secondTField;
@property (strong, nonatomic) NSString *secondTFieldText; // temporary to hold the text from FirstViewController
FirstViewController.m
#import "SecondViewController.h"
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
SecondViewController *secondViewController = (SecondViewController *)segue.destinationViewController;
secondViewController.secondTFieldText = self.firstTField.text;
}
SecondViewController.m
#import "FirstViewController.h"
- (void)viewDidLoad
{
[super viewDidLoad];
self.secondTField.text = self.secondTFieldText;
}
关于ios - 当我试图从另一个 View Controller (Objective-c?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788443/