在什么情况下会调用viewWillAppear?

时间:2013-07-17 04:36:41

标签: objective-c xcode4.5

当视图出现时,正常答案就是。

说我有一个UIViewController。我们称之为vc。

说我希望vc控制视图。

所以我做了vc.view = controlledView;

我希望每次出现controlledView都会出现,然后调用[vc viewWillAppear]。

没有。

怎么了?

即使我做

后,也不会调用viewDidLoad
[vc view]

从技术上讲,vc.view已经加载

4 个答案:

答案 0 :(得分:4)

如果你在任何其他文件中调用viewWillAppear,那么它将永远不会调用。

每次进入该视图时,viewWillAppear方法都会调用,如果你离开它然后再来或回来,它会再次调用。

请务必使用'超级'关键字作为。 WillAppear方法中的[super viewWillAppear]。

答案 1 :(得分:2)

根据docs

  

在即将添加接收者视图之前调用此方法   到视图层次结构之前和配置任何动画之前   显示视图。您可以覆盖此方法以执行自定义任务   与显示视图相关联。

答案 2 :(得分:2)

正如名称本身所示,当您的视图即将出现时,始终会调用

viewWillAppear

如果视图控制器由弹出框内的视图控制器呈现,则在呈现的控制器被解除后,不会在呈现视图控制器上调用此方法。

视图控制器的生命周期如下:

分配并加载viewcontroller时,会调用loadView,然后调用viewDidLoad。您可以在图像中看到整个流程。

请参阅此图片enter image description here

注意:此图片来自this answer

答案 3 :(得分:0)

正确答案如下。

您是否将子viewController添加为父子视图控制器的子项。

仅为父视图控制器(顶部屏幕视图控制器)调用viewWillAppear,除非将另一个viewController声明为子视图。

然后parentViewController将传递viewWillAppear事件。