导航控制器中的方向更改

时间:2012-11-05 12:28:43

标签: objective-c ios ios5 uinavigationcontroller orientation

我在导航控制器中添加了三个视图控制器。第一个和第二个视图控制器应支持两个方向,但第三个视图控制器仅支持横向模式。但是当我在纵向模式下从第二个视图控制器导航到第三个视图控制器时,它以纵向模式显示。我怎样才能纠正这个?我需要第三个视图控制器才能仅支持横向。

1 个答案:

答案 0 :(得分:0)

这是iOS 6的答案。

要使UINavigationController遵循其子项的旋转首选项,请将其子类化并覆盖以下内容:

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}

这在创建新的UINavigationController时以及弹回早期的视图控制器时有效。更多信息 - ViewController in UINavigationController orientation change

要在推送新视图控制器时使其工作,请将其添加到子类:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [super pushViewController:viewController animated:animated];

    UIViewController *viewController = [[UIViewController alloc] init];
    [self presentViewController:viewController animated:NO completion:nil];
    [self dismissViewControllerAnimated:NO completion:nil];
}

过渡有点不愉快,但它完成了工作。更多信息 - Problem pushViewController from Landscape to Portrait