您好,欢迎来到知库网。
搜索
您的当前位置:首页控制器跳转的生命周期和跳转赋值问题

控制器跳转的生命周期和跳转赋值问题

来源:知库网

通常我们用Push在进行控制器跳转的时候,大家的一般做法是

UIViewController *vc = [[UIViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];

这里其实是有一个陷阱,通常我们会误认为控制器初始化init之后,会根据控制器的生命周期执行去下
步骤:
init,
loadView,
viewDidLoad,
......,
但是这里的话UIViewController *vc = [[UIViewController alloc] init];只是执行到了init这一步骤,在进行控制器跳转[self.navigationController pushViewController:vc animated:YES];的时候才会从loadView开始执行下去。

通常我们给控制器传值,有一个习惯性的做法,给目标控制器传入一个模型,在模型的setter方法中给控件赋值。比如我们从Xib中创建视图可能会用到这样的做法,但是这里的话是不能成功的,因为在赋值时控件还没有初始化,是nil值,根本无法赋值,哪怕我们把模型赋值放在push方法之后也是不行的,这里有一个小技巧,就是通过延时执行赋值的方式,但是这样并不是很安全的。所以解决的方法是在setter方法中不要给控件赋值,而是在viewDidLoad中再去赋值。

Copyright © 2019- zicool.com 版权所有 湘ICP备2023022495号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务