我正在尝试自动旋转视图,我在此处解释了同样的问题: willRotateToInterfaceOrientation not being called
即使我实现了shouldAutorotateToInterfaceOrientation
并返回YES,我实现的每个UIViewController
子类中也是如此; willRotateToInterfaceOrientation
未被调用。
也许有人可以告诉我我错过了什么。我有以下View Controllers结构(我希望这很清楚......):
NavigationController (Programatically)
-with root > TabBarController (Programatically)
-with tab item > NavigationController (Programatically)
-with root > UITableViewController (a Subclass)
-pushed to navigator controller > UIViewController (a Subclass).
我希望有人可以帮助我。提前谢谢!
答案 0 :(得分:1)
您可以尝试通过rootviewcontroller将控制器(NavigationController)插入窗口。
如果不适合您,请使用通知UIApplicationWillChangeStatusBarOrientationNotification
修改强>
使用:
// custom controller
TestController *t = [[TestController alloc] init];
// navigaton
UINavigationController *controllerinsertIntoTab = [[UINavigationController alloc] initWithRootViewController:t];
// tab bar
UITabBarController *tabbarController = [[UITabBarController alloc] init];
[tabbarController addChildViewController:controllerinsertIntoTab];
// first navigation
UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:tabbarController];
[self.window setRootViewController:controller];
特别为您https://github.com/sakrist/TestControllers
我希望它有用
答案 1 :(得分:0)
如果您没有在任何视图控制器中的willAutoRotateToInterfaceOrientation
上收到回调,请将视图控制器添加为根视图控制器的子视图控制器。
对于Eg;说self.viewController
是您的根视图控制器,childViewController
是您想要获得自动旋转回调的视图控制器,添加以下代码行;
[self.viewController addChildViewController:childViewController];
实际上,将子视图控制器添加到任何获得旋转回调的视图控制器也会起作用。
希望它有所帮助。