objective-c - 导航 Controller 中的方向变化

标签 objective-c ios ios5 uinavigationcontroller orientation

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

最佳答案

这是一个 iOS 6 的答案。

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

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

这在创建新的 UINavigationController 和弹回早期的 View Controller 时有效。更多信息在这里 - ViewController in UINavigationController orientation change

要在推送新 View Controller 时使其工作,请将其添加到您的子类中:
- (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

关于objective-c - 导航 Controller 中的方向变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232141/

相关文章:

ios - NSArray setCompletionBlock 内部泄漏

ios - 使用 AirPrint 打印 Pdf 会导致输出较小

ios - 如何根据具有打字机效果的 UILabel 设置单元格的高度

iphone - 从 iphone 的不同 View Controller 调用函数

objective-c - CoverStory 在运行 iPhone 应用程序后报告覆盖率为 0%

iphone - iPhone4 上的音频单元音量问题

ios - 在 ios 中删除 KVO 中的 Observer 问题

iphone - 从相机和相机胶卷加载和保存图像时出现问题。我究竟做错了什么?

ios - 如何在 iOS 中裁剪非矩形区域

ios - Admob Interstitial isReady 为 False