当视图出现时,正常答案就是。
说我有一个UIViewController。我们称之为vc。
说我希望vc控制视图。
所以我做了vc.view = controlledView;
我希望每次出现controlledView都会出现,然后调用[vc viewWillAppear]。
没有。
怎么了?
即使我做
后,也不会调用viewDidLoad[vc view]
从技术上讲,vc.view已经加载
答案 0 :(得分:4)
如果你在任何其他文件中调用viewWillAppear,那么它将永远不会调用。
每次进入该视图时,viewWillAppear方法都会调用,如果你离开它然后再来或回来,它会再次调用。
请务必使用'超级'关键字作为。 WillAppear方法中的[super viewWillAppear]。
答案 1 :(得分:2)
根据docs
在即将添加接收者视图之前调用此方法 到视图层次结构之前和配置任何动画之前 显示视图。您可以覆盖此方法以执行自定义任务 与显示视图相关联。
答案 2 :(得分:2)
viewWillAppear
。
如果视图控制器由弹出框内的视图控制器呈现,则在呈现的控制器被解除后,不会在呈现视图控制器上调用此方法。
视图控制器的生命周期如下:
分配并加载viewcontroller时,会调用loadView,然后调用viewDidLoad。您可以在图像中看到整个流程。
请参阅此图片
注意:此图片来自this answer
答案 3 :(得分:0)
正确答案如下。
您是否将子viewController添加为父子视图控制器的子项。
仅为父视图控制器(顶部屏幕视图控制器)调用viewWillAppear,除非将另一个viewController声明为子视图。
然后parentViewController将传递viewWillAppear事件。