旋转UIView – willRotateToInterfaceOrientation不被调用

我试图自动控制一个视图,我有这里解释相同的问题: willRotateToInterfaceOrientation没有被调用 。

即使我实现了shouldAutorotateToInterfaceOrientation并返回YES,在我实现的每个UIViewController子类中; willRotateToInterfaceOrientation没有被调用。

也许有人可以告诉我我错过了什么。 我有以下视图控制器结构(我希望这是清楚的..):

 NavigationController (Programatically) -with root > TabBarController (Programatically) -with tab item > NavigationController (Programatically) -with root > UITableViewController (a Subclass) -pushed to navigator controller > UIViewController (a Subclass). 

我希望有一个人可以帮助我。 提前致谢!

您可以尝试通过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

我希望这是有帮助的

如果您没有在任何视图控制器的willAutoRotateToInterfaceOrientation上接收callback, willAutoRotateToInterfaceOrientation视图控制器添加为您的根视图控制器的子视图控制器。

例如; 说self.viewController是你的根视图控制器和childViewController是你想获得自动旋转callback视图控制器,添加下面的代码行;

[self.viewController addChildViewController:childViewController];

实际上,作为子视图控制器添加到任何获取轮换callback视图控制器也将工作。

希望能帮助到你。