2015-10-27 8 views
0

У меня есть приложение, состоящее из одного контроллера панели вкладок, который содержит 4 навигационных контроллера. Я не могу найти решение, чтобы один контроллер в иерархии навигационных контроллеров находился только в ландшафтном режиме. Все остальные контроллеры предполагают быть портретом. Оцените любую помощь по этой проблеме.Один контроллер в альбомной ориентации

ответ

2

В viewDidLoad(): контроллера навигации, который вы хотите быть пейзаж, включают в себя:

let value = UIInterfaceOrientation.LandscapeLeft.rawValue 
UIDevice.currentDevice().setValue(value, forKey: "orientation") 

не забудьте добавить следующее переопределение слишком

override func shouldAutorotate() -> Bool { 
    return true 
} 
+0

Я добавил этот код навигации контроллера, он не работает на прошивке 8, shouldAutorotate никогда не называло. Кажется, что это большая проблема в новейшей iOS. – Oleg

0

поэтому я попытался следующее решение и работал на меня:

В AppDelegate.swift:

var currViewController: UIViewController? 

func application(application: UIApplication, supportedInterfaceOrientationForWindows window: UIWindow?) -> UIInterfaceOrientationMask { 
    if currViewController is MyCustomController { 
    return UIInterfaceOrientationMask.LandscapeLeft 
    } else { 
    return UIInterfaceOrientationMask.Portrait 
    } 
} 

В MyCustomController.swift:

let oAppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

override func viewDidLoad(){ 
    super.viewDidLoad() 
    oAppDelegate.currViewController = self 
}