2015-12-06 29 views
4

^上面根本没有答案......对于导航控制器中的特定(并非全部)视图控制器禁用自动旋转的问题。类似的问题没有解决禁用特定视图控制器自动旋转的功能,而是禁用导航控制器内所有视图控制器中的自动旋转。我的导航控制器包含一些我想要自动旋转的VC以及其他我不想自动旋转的VC。没有现存的问题令人满意地回答这个问题如何禁用导航控制器(Swift)内特定视图控制器的自动旋转?

+0

建议不提供SWIFT代码和任何类似的问题,不采取迅速的新版本提供了工作代码的答案。 – IvOS

+0

将'shouldAutorotate()'添加到'navigationController'而不是'viewController'为我解决了这个问题。确保为'navigationController'分配一个类。我可以详细说明你是否想要我。 – StevoHN

+0

我有一个想法,你指的是什么,但将不胜感激,如果你能详细说明......提前感谢@StevoHN – IvOS

回答

4

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

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

基本上,您为UINavigationController创建自定义类并将其分配给Storyboard中的UINavigationController。在自定义UINavigationController类中,您需要overrideshouldAutorotate函数,并检查您想禁用自动旋转的类的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 
} 
+1

非常有帮助,完全做我想要的。 – IvOS

+1

@zzzel ..我正在编程添加uinavigationcontroller和它的视图控制器,但它旋转视图...没有不工作! – Saty

+0

@Saty这是一个不同的例子。打开一个新的SO问题。 – zzzel

相关问题