【问题标题】:How to disable auto-rotation for specific View Controllers inside a Navigation Controller (Swift)? [duplicate]如何禁用导航控制器(Swift)中特定视图控制器的自动旋转? [复制]
【发布时间】:2016-03-11 06:55:35
【问题描述】:

^Above 根本没有答案...在为导航控制器内的特定(不是全部)视图控制器禁用自动旋转时遇到问题。类似的问题没有解决禁用特定视图控制器自动旋转的能力,而是禁用导航控制器内所有视图控制器的自动旋转。我的导航控制器包含一些我想要自动旋转的 VC 和其他我不想自动旋转的 VC。没有现有的问题可以令人满意地回答这个问题。

【问题讨论】:

  • 建议的答案不提供 swift 代码,任何类似问题不提供新版本 swift 的工作代码。
  • shouldAutorotate() 添加到navigationController 而不是viewController 为我修复了它。确保为navigationController 分配一个类。如果你愿意,我可以详细说明。
  • 我知道你指的是什么,但如果你能详细说明,我将不胜感激......提前感谢@StevoHN

标签: xcode swift uiviewcontroller uinavigationcontroller


【解决方案1】:

我做了一个关于如何做到这一点的示例项目:GitHub repo

虽然@Sidetalker 的回答是正确的,但我认为它缺乏一点解释。

基本上,您为 UINavigationController 创建一个自定义类,并将其分配给 Storyboard 中的 UINavigationController。在自定义 UINavigationController 类中,您 override shouldAutorotate 函数并检查您要禁用自动旋转的类的 topViewController 是否为 ViewController(您的 UIViewController 在 Storyboard 中的类)。

在自定义UINavigationController:

override func shouldAutorotate() -> Bool {
if !viewControllers.isEmpty {

  // Check if this ViewController is the one you want to disable roration on
  if topViewController!.isKindOfClass(ViewController) {

    // If true return false to disable it
    return false
  }
}

// Else normal rotation enabled
return true
}

【讨论】:

  • 非常有帮助,完全符合我的要求。
  • @zzzel.. 我正在以编程方式添加 uinavigationcontroller 及其视图控制器,但是它旋转视图......没有不起作用!!!
  • @Saty 这是一个不同的例子。打开一个新的 SO 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
相关资源
最近更新 更多