2015-04-15 2 views
0

У меня есть контроллер навигации, который содержит родительский UIViewController, который поддерживает всю ориентацию. Я хочу, чтобы мой родительский UIViewController представил свой дочерний UIViewController, который поддерживает только портретную ориентацию. Как это можно сделать в iOS 8?Блокировка дочернего UIViewController к портрету только в iOS 8

Я пробовал настройки поддерживаемого интерфейса, чтобы вернуть UIInterfaceOrientationMaskPortrait только для моего дочернего UIViewController, но он не работает.

+0

Я верю, что это bcoz есть некоторые изменения в iOS 8. Я нашел ответ в этом посте, проверьте его. http://stackoverflow.com/questions/26357162/how-to-force-view-controller-orientation-in-ios-8 – vhong

+0

Для более ясного объяснения, я нашел его блог, следуя лучшей практике как Single UIViewController, так и ViewContoller, которые встроены с UINavigationConroller и UITabBarController. http://koreyhinton.com/blog/lock-screen-rotation-in-ios8.html – vhong

ответ

0

Согласно обновления при условии, что, кажется, что есть правильный ответ на Support landscape for only one view in UINavigationController

+0

Я пробовал это на родительском, но метод supportedInterfaceOrientations не вызван для Child's. Есть идеи? – iamarnold

+0

Что вы имеете в виду? Представление модально поверх родителя или просто нажатие на стек навигации? – Alex

+0

Sry Я имел в виду толчок. В моем Parient UIViewController у меня есть метод, который подталкивает мой дочерний UIViewController на моем навигационном контроллере. Я использовал [self.navigationController pushViewController: childController animated: YES]; для нажатия моего дочернего UIViewController. – iamarnold

1

Простой способ сделать что:

В вашем ребенке View Controller вы можете определить этот метод делегата:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; 
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
} 

добавить эту строку в начало вашего ViewDidLoad метода:

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

Это простое решение для ориентации в портретном режиме.

+0

Не может быть самым изящным решением, но отлично работает для меня! благодаря – rosshump