模态UINavigationController以错误的方向呈现

时间:2013-01-14 13:57:43

标签: ios6 uinavigationcontroller rotation presentmodalviewcontroller

我有一个设置,iPad应用程序支持所有方向。在应用程序的一部分中,轻敲触发显示需要导航控制器的模态视图控制器。所以我基本上在做:

UIViewController *myViewController = [[UIViewController alloc] initWithNibName:@"MyView" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:myViewController];
NSLog(@"%d", nav.interfaceOrientation);

[window.rootViewController presentModalViewController:nav animated:YES];

当iPad处于人像(主页按钮)时,此功能正常。在任何其他方向,模态视图始终以主页按钮而不是设备的当前底部以纵向显示。

如果我完全跳过导航控制器并以模态方式显示myViewController,则显示正确。

所以,我尝试了继承UINavigationViewController并明确覆盖shouldAutorotate:supportedInterfaceOrientations:方法,但这没有任何效果。有趣的是,如果我覆盖viewWillAppear方法并记录interfaceOrientation属性的值,即使从上面的代码访问它时返回正确的值,它也会返回1

我还检查过Info.plist中是否支持所有方向。

那么,还有什么可能导致这种行为呢?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试在导航控制器的子类中实现preferredInterfaceOrientationForPresentation。

以下对我有用:

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return self.interfaceOrientation;
}