我在修改应用中某些页面的方向时出现问题。 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
上有一个断点,但它永远不会触发。
我再次进行了一些挖掘,发现我的.m文件中的shouldAutoRotate
方法可以在我更改方向的任何时候触发homepageController。我查看了我的xib文件,这就是我所拥有的。
我看到我的homepageController是rootViewController,当我在mainController上从tab切换到tab时,我正在使用这段代码。
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
UINavigationController *nav = (UINavigationController *) viewController;
[nav popToRootViewControllerAnimated:NO];
}
所以看到我的homepageController是rootViewController,这就是为什么shouldAutoRotate
总是被调用的原因。
我想知道是否有更好的解决方案。我不认为我这样做是正确的,所以任何指导都会很棒。
谢谢
答案 0 :(得分:0)
我认为shouldAutoRotate
没有调用,因为您使用的是addSubView:
[appDel.window addSubView: appDel.mainController]
将你的viewcontrollers设置为rootviewControllers,你在窗口中用作addSubview。
所以使用
appDel.window.rootViewController= appDel.mainController;
现在可能shouldAutoRotate
会触发事件。
希望它适合你。