项目场景:
场景描述:
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
];
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
;
}