iOS 6错误:当导航控制器用作窗口根时未调用supportedInterfaceOrientations

时间:2012-10-12 15:57:04

标签: iphone objective-c xcode

在我的mainwindow.xib中,我有一个navigationcontroller。在(作为子项)之上我有另一个viewcontroller(homeviewcontroller)。

在笔尖中,我将窗口的rootviewcontroller设置为此导航控制器。

这部署到应用程序商店并且运行良好。

自升级到ios6 sdk以来,我遇到了方向问题 - 基本上使用这种设计,在ios 6设备/模拟器中运行我的app时,我的homeviewcontroller的supportedInterfaceOrientations方法不会被调用。

为了解决这个问题,我需要将homeviewcontroller设置为窗口的rootviewcontroller,但这不是我想要的 - 我需要导航控制器。

如何解决ios6中这个烦人的错误?

更新

我也尝试过以编程方式执行此操作 - 它仍然无效。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{        
    HomeViewController *homeVC = [[HomeViewController alloc]init];
    UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:homeVC];
    [self.window setRootViewController:navController];

    [self.window makeKeyAndVisible];

    return YES; 
}

3 个答案:

答案 0 :(得分:7)

您需要子类化UINavigationController并覆盖supportedInterfaceOrientations。

答案 1 :(得分:1)

详细说明@ phix23的答案,我写了这个小小的UINavigationController子类

@implementation MyNavigationController

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

@end

根据我对其评论中提到的文档的理解,这应该是默认行为。但不知何故,这对我有用,而没有它,它不会

答案 2 :(得分:0)

在运行时以编程方式执行此操作吗? (在-applicationDidFinishLaunching:委托方法中)