RootViewController导致IOS 6中的方向问题

时间:2013-04-19 18:53:01

标签: iphone ios6

我在修改应用中某些页面的方向时出现问题。 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文件,这就是我所拥有的。

enter image description here

我看到我的homepageController是rootViewController,当我在mainController上从tab切换到tab时,我正在使用这段代码。

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

    UINavigationController *nav = (UINavigationController *) viewController;
    [nav popToRootViewControllerAnimated:NO];

}

所以看到我的homepageController是rootViewController,这就是为什么shouldAutoRotate总是被调用的原因。

我想知道是否有更好的解决方案。我不认为我这样做是正确的,所以任何指导都会很棒。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为shouldAutoRotate没有调用,因为您使用的是addSubView:

[appDel.window addSubView: appDel.mainController]

将你的viewcontrollers设置为rootviewControllers,你在窗口中用作addSubview。

所以使用

    appDel.window.rootViewController= appDel.mainController;

现在可能shouldAutoRotate会触发事件。

希望它适合你。