iOS 6 错误:当导航控制器用作窗口根目录时,支持的接口方向未调用



在我的主窗口中,我有一个导航控制器。 在(作为子项目)之上,我还有另一个视图控制器(主视图控制器)。

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

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

自从升级到ios6 sdk以来,我遇到了方向问题 - 基本上通过这种设计,在ios 6设备/模拟器中运行我的应用程序时,我的homeviewcontroller的支持的界面方向方法不会被调用。

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

如何解决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; 
}

您需要对 UINavigationController 进行子类化并覆盖那里的 supportedInterfaceOrientations。

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

@implementation MyNavigationController
- (NSUInteger) supportedInterfaceOrientations
{
    return [[self topViewController] supportedInterfaceOrientations];
}
@end

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

在运行时以编程方式进行吗?(在您的-applicationDidFinishLaunching:委托方法中)

最新更新