setViewControllers没有根据topViewController设置正确的方向

时间:2013-03-05 15:47:55

标签: ios6 uiviewcontroller uinavigationcontroller rotation

我使用UINavigationController在我的应用中展示内容。我将控制器保存在单独的字典中,并且在用户交互时,我使用正确的UIViewContoller加载导航控制器。每个视图控制器都实现

- (BOOL)shouldAutoRotate; 

- (NSUInteger)supportedInterfaceOrientations;

但是当我尝试将视图控制器设置为我的导航控制器时:

[self setViewControllers:[NSArray arrayWithObject:controller] animated:NO];

应用程序不会根据控制器支持的方向旋转

例如,手机处于横向,我的视图控制器仅支持纵向。 如何让设备旋转为纵向?

代码: 我的导航控制器子类

- (BOOL)shouldAutorotate{
    return [[self topViewController] shouldAutorotate];
}


- (NSUInteger)supportedInterfaceOrientations{
    return [[self topViewController] supportedInterfaceOrientations];
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentatio{
    return [[self topViewController] preferredInterfaceOrientationForPresentation];
}

我的控制器:

- (BOOL)shouldAutorotate{
    return YES;
}


- (NSUInteger)supportedInterfaceOrientations{    
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        return UIInterfaceOrientationMaskPortrait;
    }
    return UIInterfaceOrientationMaskAll;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationPortrait;
}

该文档指出,为了致电supportedInterfaceOrientationsshouldAutorotate必须返回YES。

任何想法??

0 个答案:

没有答案