我在 iOS 5.0 上遇到了我的自定义视图控制器子类的奇怪行为。我没有在我的 iPad 应用程序中使用标准导航控制器等,但我自己呈现所有视图控制器 - 这就是我需要手动调用 -viewWillAppear 和 viewDidAppear 方法的原因。
从 iOS 5.0 开始,似乎在将视图控制器的视图添加为子视图时,这些方法会在视图的视图控制器实例上自动调用。这意味着在我的情况下这些方法被调用了两次。
有什么建议么?除了创建我自己的视图生命周期方法和重写整个应用程序?
非常感谢!
我在 iOS 5.0 上遇到了我的自定义视图控制器子类的奇怪行为。我没有在我的 iPad 应用程序中使用标准导航控制器等,但我自己呈现所有视图控制器 - 这就是我需要手动调用 -viewWillAppear 和 viewDidAppear 方法的原因。
从 iOS 5.0 开始,似乎在将视图控制器的视图添加为子视图时,这些方法会在视图的视图控制器实例上自动调用。这意味着在我的情况下这些方法被调用了两次。
有什么建议么?除了创建我自己的视图生命周期方法和重写整个应用程序?
非常感谢!
将以下内容添加到您的 UIViewController 以禁用这些 -viewWill... 和 -viewDid... 方法的自动调用:
-(BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers {
return NO;
}
这将强制 iOS 5.0 在添加子视图时停止调用这些方法,并且不会破坏 iOS 4.x 的任何内容。只要我继续支持 iOS 4.x 上的设备,我就会使用这种方法。一旦我放弃对 iOS 4 的支持,我将重构我的代码以使用交换视图控制器的新方法(如 hypercrypt 发布的 Session 102 视频中所述)。
查看Session 102 -从 WWDC11 实现 UIViewController Containment。
在 iOS 5 上,您需要使用正确的视图控制器容器。