2011-10-17 66 views
3

我在iOS 5.0上面临自定义视图控制器子类的奇怪行为。我没有在iPad应用程序中使用标准导航控制器等,但是我自己提供了所有视图控制器 - 这就是为什么我需要手动调用-viewWillAppear和viewDidAppear方法。iOS 5.0查看生命周期问题

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

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

非常感谢!

回答

6

以下添加到您的UIViewController来禁用这些-viewWill ...和... -viewDid方法自动呼叫:

-(BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers { 
    return NO; 
} 

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