iOS 5.0 查看生命周期问题

Posted

技术标签:

【中文标题】iOS 5.0 查看生命周期问题【英文标题】:iOS 5.0 view life-cycle issue 【发布时间】:2011-10-17 15:18:04 【问题描述】:

我在 ios 5.0 上遇到了我的自定义视图控制器子类的奇怪行为。我没有在我的 iPad 应用程序中使用标准导航控制器等,但我自己呈现所有视图控制器 - 这就是我需要手动调用 -viewWillAppear 和 viewDidAppear 方法的原因。

从 iOS 5.0 开始,似乎在将视图控制器的视图添加为子视图时,这些方法会在视图的视图控制器实例上自动调用。这意味着在我的情况下这些方法被调用了两次。

有什么建议吗?除了创建我自己的视图生命周期方法和重写整个应用程序?

非常感谢!

【问题讨论】:

【参考方案1】:

将以下内容添加到您的 UIViewController 以禁用自动调用这些 -viewWill... 和 -viewDid... 方法:

-(BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers 
   return NO;

这将强制 iOS 5.0 在添加子视图时停止调用这些方法,并且不会破坏 iOS 4.x 的任何内容。只要我继续支持 iOS 4.x 上的设备,我就会使用这种方法。一旦我放弃对 iOS 4 的支持,我将重构我的代码以使用交换视图控制器的新方法(如 hypercrypt 发布的 Session 102 视频中所述)。

【讨论】:

【参考方案2】:

查看来自 WWDC11 的 Session 102 - Implementing UIViewController Containment。

在 iOS 5 上,您需要使用正确的视图控制器容器。

【讨论】:

以上是关于iOS 5.0 查看生命周期问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS中视图控制器生命周期和视图生命周期有啥区别?

5.0对象生命周期及crud操作

Android探究2:Android 5.0下 Dialog&AlertDialog 并不会影响Activity的生命周期

iOS 生命周期

iOS:捋一遍View的生命周期

iOS 应用程序生命周期