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 查看生命周期问题的主要内容,如果未能解决你的问题,请参考以下文章
Android探究2:Android 5.0下 Dialog&AlertDialog 并不会影响Activity的生命周期