我在iOS 5.0上遇到了我的自定义视图控制器子类的奇怪行为。我在我的iPad应用程序中没有使用标准导航控制器等,但我自己也提供了所有视图控制器 - 这就是我需要手动调用-viewWillAppear和viewDidAppear方法的原因。
从iOS 5.0开始,似乎在将视图控制器的视图添加为子视图时,会在视图的视图控制器实例上自动调用这些方法。这意味着在我的情况下这些方法被调用两次。
有什么建议吗?除了创建我自己的视图生命周期方法和重写整个应用程序?
非常感谢!
答案 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上,您需要使用正确的视图控制器包含。