我有一个UIViewController,我希望在整个应用程序之上添加一个独立的层。所以我尝试使用app委托中的[self.window addSubview:viewController.view]将其添加到UIWindow。
但是,当用户旋转设备时,我的视图控制器中没有得到willRotateToInterfaceOrientation事件。所以我尝试做了建议的here:我将视图控制器添加为app委托中窗口的根视图控制器的子视图,但我的willRotateToInterfaceOrientation仍未被调用。
我该怎么办?
答案 0 :(得分:7)
您的rootViewController充当容器视图控制器。
在iOS 5.0及更高版本中,自定义UIViewController子类现在可以充当容器视图控制器。 UINavigationController和UITabBarController类是UIKit提供的容器视图控制器的示例。容器视图控制器背后的想法是它管理来自其包含的视图控制器(也称为子视图控制器)的内容的呈现。子内容可以按原样显示,也可以与容器视图控制器管理的其他自定义视图一起显示。
您正在执行的是实现自己的视图层次结构,因此您负责沿着该层次结构传递UILifecycle-Events。 iOS> = 5.0支持您创建此类容器viewControllers,提供
- (void)addChildViewController:(UIViewController *)childController
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers
方法(等等)。对于iOS< 5.0遗憾的是你必须手动执行此操作。
答案 1 :(得分:2)
在你的rootViewController中,你应该拥有对independentLayerController的引用并转发willRotateToInterfaceOrientation。
您的rootViewController将接收消息,您可以在independentLayerController上调用willRotateToInterfaceOrientation。