如何禁用导航控制器(Swift)中特定视图控制器的自动旋转?

时间:2015-12-06 17:45:44

标签: xcode swift uiviewcontroller uinavigationcontroller

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

1 个答案:

答案 0 :(得分:4)

我制作了一个关于如何执行此操作的示例项目:GitHub repo

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

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

在自定义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
}