项目场景:
场景描述:
- View 1中的email label 的内容需要显示在View 2的TextFiled中,点击Edit按钮切换页面;
- View 2的TextField修改email内容后,点击Finished按钮返回View 1中,改变email Label的内容。
问题描述:
- 如下图所以:
- 当在viewDidLoad中设置View 2 的TextField内容时候,返现presentingViewController(即View 1)为nil,无法获取View 1中的email Label的内容;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// 前一个页面
self.emailField.text = ((ViewController *)self.presentingViewController).emailLabel.text;
}
- 方法查看Quick Help Inspector 中的Discussion
原因分析:
如图所示:- 原文地址StackOverflow
- 结合以上文档描述,viewDidLoad确保了nib文件加载到了内存中,而还没有确保加载到navigation tree上,建议上面逻辑放在viewWillAppear上.
解决方案:
- 正确渲染成功
- (void)viewWillAppear:(BOOL)animated{
// 前一个页面
self.emailField.text = ((ViewController *)self.presentingViewController).emailLabel.text;
}