2

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

4

1 回答 1

0

这是一个 iOS 6 的答案。

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

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

这在创建新的 UINavigationController 和弹回早期的视图控制器时有效。更多信息在这里 - UINavigationController 方向更改中的 ViewController

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

- (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];
}

过渡有点不愉快,但它完成了工作。更多信息在这里 -从横向到纵向的问题 pushViewController

于 2013-07-01T21:09:42.650 回答