我没有得到UIViewController的委托逻辑 .
它有委托方法
- viewWillAppear: - viewDidAppear: - viewWillDisappear: - viewDidDisappear:
那么,每次,如果viewcontroller的视图出现或消失,viewController中的上述方法将被调用?
我有两个viewcontrollers . viewcontroller2的视图(view2)是viewcontroller1视图(view1)的子视图 .
如果我将view2的alpha设置为0,那么这个view2将会消失 . 但是 - viewWillDisappear:和 - viewDidDisappear:从不调用viewcontroller2 .
那有什么意义呢?
我应该如何使用这些方法来控制视图的显示和消失?
谢谢
2 回答
这些委托是viewController的委托,而不是添加到viewController视图的子视图 . 您需要手动设置各个子视图的alpha .
...当您的viewController被实例化,或者有意地从屏幕上移除,或者响应内存不足的情况时调用....
插口,
在整个视图控制器的生命周期中的各个点调用UIViewController生命周期方法,viewDidLoad,viewWillAppear等 .
根据这些方法,“出现”与viewController的视图的alpha无关 . 如果其框架的一部分是视图层次结构中的最顶层,则会出现视图 . 因此,如果您完全覆盖了一个视图,然后删除了覆盖视图,您将获得一个viewWillAppear . 然而,如果你只是调整alpha,那么视图在技术上仍然是“可见的” .
所有加载完成后调用viewDidLoad(包含在你的nib文件中) . 这是设置IB控件的地方 . 使用viewWillAppear时,您无法假设已加载任何内容 . 在大多数情况下,所有接口配置最好在viewDidLoad中完成 .
此外,重要的是要注意这些方法是委派的 . 也就是说,你永远不会明确地调用它 .
我希望这可以澄清生命周期方法和其中“出现”的定义 .
祝好运!