import Foundation import UIKit extension UINavigationController { public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { if let visibleViewController = visibleViewController { return visibleViewController.supportedInterfaceOrientations() } else if let topViewController = topViewController { return topViewController.supportedInterfaceOrientations() } else { return .Portrait } } public override func shouldAutorotate() -> Bool { if let visibleViewController = visibleViewController { return visibleViewController.shouldAutorotate() } else if let topViewController = topViewController { return topViewController.shouldAutorotate() } else { return false } } override public func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { if let visibleViewController = visibleViewController { return visibleViewController.preferredInterfaceOrientationForPresentation() } else if let topViewController = topViewController { return topViewController.preferredInterfaceOrientationForPresentation() } else { return .Portrait } } } extension UIViewController { public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return .Portrait } public override func shouldAutorotate() -> Bool { return false } override public func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { return .Portrait } }