2016-05-16 3 views
0

Я пишу модуль, который включает в себя UIViewController (и Storyboard), и его можно вызывать другой программой-оболочкой, поэтому я не могу принудительно применять подкласс класса UINavigationController, но его можно использовать по UINavigationController.
В этом случае, как я могу изменить ориентацию своего ViewController? Кроме того, только один UIViewController должен быть программно изменен ориентацией.
Я попытался использовать UINavigationControllerDelegate, но он не называется. (Я попробовал установить делегат как на init, так и на viewDidLoad, но не работал)
Есть ли другой способ решить эту проблему без?
Любая помощь будет оценена по достоинству.Программно изменить ориентацию ViewController без подкласса UINavigationController

+0

Какова ориентация VC на работу с UINavigationController? –

+0

В моем понимании ... если я изменю ориентацию VC на NavigationController, я должен подклассифицировать NavigationController и переопределить 'supportedInterfaceOrientations' и' shouldAutorotate' – Aigori

ответ

0

Установить это в viewDidAppear методе ViewController:

для ландшафтного:

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; 
[[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 

ИЛИ

Для Портрет:

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; 
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
+0

Не повезло. Фактически, мне также нужна кнопка переключения для изменения ориентации. – Aigori

0

Это было не важно, из UINavigationController. supportedInterfaceOrientations и shouldAutorotate не были вызваны, так как iOS 9 (iPad) заблокировали их. Я могу решить эту проблему, проверяя Требуется полный экран (Настройки цели) - Общие сведения - Информация о развертывании.

Это то, что я нашел (подробно). https://stackoverflow.com/a/33567990/1010443

Смежные вопросы