4

当我打电话时,performSegueWithIdentifier:我会在prepareForSegue:之后重写,以便在我的目标视图控制器上设置一些属性。但是,我试图了解这里的操作顺序以确保它是安全的。

我实例化目标视图控制器:

MyViewController *myVC = (MyViewController*)segue.destinationViewController;

之后,我在其上设置了一些属性——即,我初始化了另一个处理加载不同 Web 视图的对象的创建,然后在该对象上设置属性:

[myVC setFormHandler:
    [[WebFormHandler alloc] initWithSelectedFormName:[self theFormName]]];

viewDidLoad:我的目标控制器中,我然后查询该对象的属性,并使用它来加载正确的 Web 视图。现在,我对首先发生的事情感到有些困惑——属性的设置,或者viewDidLoad:目标控制器上的设置。可以肯定地说视图控制器的属性总是在调用prepareForSegue:之前设置吗?viewDidLoad:

4

1 回答 1

3

看起来您可能已经从其他帖子中找到了答案,但我只是想澄清一点。

标准流程是

performSegue -> prepare -> loadView(在目标控制器中)

但是,在 popover segues 中,目标视图在 prepareForSegue 调用之前加载。

注意:在 iOS 8 中不再是这种情况。在 iOS 8 中,popover segue 的视图在调用 prepareForSegue 时不会加载。

于 2012-09-19T16:10:55.287 回答