【发布时间】:2012-06-15 22:56:05
【问题描述】:
当我调用performSegueWithIdentifier: 时,我随后会覆盖prepareForSegue:,以便在我的目标视图控制器上设置一些属性。但是,我正在尝试了解此处的操作顺序以确保其安全。
我实例化目标视图控制器:
MyViewController *myVC = (MyViewController*)segue.destinationViewController;
之后我在其上设置了一些属性 - 即,我初始化创建另一个处理加载不同 Web 视图的对象,然后在该对象上设置属性:
[myVC setFormHandler:
[[WebFormHandler alloc] initWithSelectedFormName:[self theFormName]]];
在我的目标控制器的viewDidLoad: 中,然后我查询此对象的属性,并使用它来加载正确的 Web 视图。现在,我对首先发生的事情感到有些困惑——属性的设置,或者目标控制器上的viewDidLoad:。是否可以肯定地说,视图控制器的属性总是在调用viewDidLoad: 之前从prepareForSegue: 设置?
【问题讨论】:
-
我认为这篇 SO 帖子回答了您的问题 stackoverflow.com/a/8854475/1452351
-
有趣。所以似乎总是先调用 prepareForSegue,然后调用 viewDidLoad。考虑到视图控制器是在 prepare 方法中实例化的,这对我来说似乎很奇怪。
-
viewDidLoad 与实例无关,而是与屏幕上显示的视图相关联。此外,您没有实例化视图控制器,您只是获得了对由框架或父控制器创建的现有对象的引用
标签: objective-c ios uiviewcontroller