iOS 5.0查看生命周期问题

时间:2011-10-17 15:18:04

标签: ios viewwillappear

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

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

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

非常感谢!

2 个答案:

答案 0 :(得分:6)

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

-(BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
   return NO;
}

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

答案 1 :(得分:1)

从WWDC11查看Session 102 - Implementing UIViewController Containment

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