如何在iOS 7/8上禁用单个视图的横向定向

如何在iOS 7/8上禁用单个视图的横向定向,ios,ios7,ios8,orientation,autorotate,Ios,Ios7,Ios8,Orientation,Autorotate,我在常规目标设置下为我的应用程序启用了横向方向: 这一切工作正常-该应用程序在所有选定的方向都可用 现在我只想在一个视图上禁用横向模式 我在特定视图控制器上尝试了以下操作: -(BOOL)应自动旋转 { 返回否; } -(整数)支持的接口方向 { 返回UIInterfaceOrientationMaskPortrait; } 不幸的是没有成功 编辑: 我的应用程序的结构是: UITabBarController UINavigationController UITa

我在常规目标设置下为我的应用程序启用了横向方向:

这一切工作正常-该应用程序在所有选定的方向都可用

现在我只想在一个视图上禁用横向模式

我在特定视图控制器上尝试了以下操作:

-(BOOL)应自动旋转
{
返回否;
}
-(整数)支持的接口方向
{
返回UIInterfaceOrientationMaskPortrait;
}
不幸的是没有成功


编辑:

我的应用程序的结构是:

UITabBarController
    UINavigationController
        UITableViewController
            UIViewController

您是否将上面的代码放在视图的ViewController或NavigationController中?您需要将其放入导航控制器中,否则导航控制器将旋转,从而导致视图也旋转。子类UINavigationController和覆盖应自动旋转:

- (BOOL)shouldAutorotate
{
    id currentViewController = self.topViewController;

    if ([currentViewController isKindOfClass:[ViewController class]])
        return NO;

    return YES;
}
因此,仅当显示的视图是您不希望旋转的视图时,导航控制器才会旋转

编辑

内部控制器:

- (BOOL)shouldAutorotate
{

    if([self.selectedViewController isKindOfClass:[UINavigationController class]]){

        UINavigationController *navigationController = (UINavigationController *) self.selectedViewController;
        id currentViewController = navigationController.topViewController;

        if ([currentViewController isKindOfClass:[ViewController class]])
            return NO;
        }
    }
    return YES;
}

此视图是否嵌入导航控制器?@JoshGafni是的,它是一个子视图…感谢您的快速响应!已将您的代码添加到NavigationController-但什么都没有发生。。。我在问题中添加了我的应用程序结构-可能有问题吗?我在shouldAutorotate函数中添加了一个断点,如果我打开tableview(在选项卡中),它不会被调用…请稍候。你到底想发生什么。是否希望选项卡旋转,但其中的视图不旋转?你想让导航栏也旋转吗?我有不同的选项卡,其中有一些TableView,TableView下面是normal view controller。。。“普通”应用程序应该旋转,但是tableview下面的一些“子视图”不应该旋转……但是我想,当您查看“普通视图控制器”时,选项卡和导航栏仍然可以在屏幕上看到。如果“正常视图控制器”在屏幕上,您是否希望它们也不旋转?