在我的应用程序的某些页面上更改我的方向时遇到问题。该shouldAutoRotate
功能不会在任何一页上触发。我做了一些挖掘,希望有人能告诉我这段代码是否正确。
我有一个窗口、一个名为 homepageController 的导航控制器和一个名为 mainController 的标签栏控制器。该应用程序的工作方式如下。我提供 homepageController 供用户登录。输入正确的登录密钥后,我从窗口中删除 homepageController 视图并添加 mainController 视图。这是代码
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:appDel.homePageController.view.superview cache:NO];
[appDel.homePageController.view removeFromSuperview];
[UIView commitAnimations];
[appDel.window addSubview:appDel.mainController.view];
[appDel.mainController setSelectedIndex:0];
[appDel.window bringSubviewToFront:appDel.mainController.view];
我转到标签栏上的第一页并尝试旋转它,并在 上设置断点shouldAutoRotate
,但它永远不会触发。
我再次进行了一些挖掘,发现我shouldAutoRotate
在 homepageController 的 .m 文件中的方法会在我改变方向时被触发。我查看了我的 xib 文件,这就是我所拥有的。
我看到我的 homepageController 是 rootViewController 并且在 mainController 上从选项卡切换到选项卡时,我正在使用此代码。
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
UINavigationController *nav = (UINavigationController *) viewController;
[nav popToRootViewControllerAnimated:NO];
}
所以看到我的 homepageController 是 rootViewController 这就是为什么shouldAutoRotate
总是在那里被调用。
我想知道是否有更好的解决方案。我不认为我这样做是对的,所以任何指导都会很棒。
谢谢