ios开发之Modal切换场景遇到的bug2

项目场景:

在这里插入图片描述

场景描述:

  • View 1中的email label 的内容需要显示在View 2的TextFiled中,点击Edit按钮切换页面;
  • View 2的TextField修改email内容后,点击Finished按钮返回View 1中,改变email Label的内容。

问题描述:

  1. 如下图所以:
  • 当在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;
}
  1. 方法查看Quick Help Inspector 中的Discussion
    在这里插入图片描述

原因分析:

如图所示:
  • 原文地址StackOverflow
    在这里插入图片描述
  • 结合以上文档描述,viewDidLoad确保了nib文件加载到了内存中,而还没有确保加载到navigation tree上,建议上面逻辑放在viewWillAppear上.

解决方案:

  • 正确渲染成功
- (void)viewWillAppear:(BOOL)animated{
    
    
    // 前一个页面
    self.emailField.text = ((ViewController *)self.presentingViewController).emailLabel.text;
}

猜你喜欢

转载自blog.csdn.net/Suarez1987/article/details/108398734