2

在我的 mainwindow.xib 中有一个导航控制器。在(作为子项目)之上,我有另一个视图控制器(homeviewcontroller)。

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

这已部署到应用商店并完美运行。

自从升级到 ios6 sdk 后,我遇到了方向问题 - 基本上,在这种设计中,在 ios 6 设备/模拟器中运行我的应用程序时,我的 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; 
}
4

3 回答 3

7

您需要继承 UINavigationController 并在那里覆盖supportedInterfaceOrientations。

于 2012-10-15T10:12:28.657 回答
1

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

@implementation MyNavigationController

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

@end

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

于 2013-02-19T15:59:13.620 回答
0

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

于 2012-10-12T16:14:07.903 回答