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