2015-03-14 3 views
1

Я позволил альбомной ориентации для моего приложения на общих целевых параметров: enabled landscape orientationsКак отключить альбомной ориентации на одном экране в прошивкой 7/8

Это все работает нормально - приложение доступно во всех выбранных ориентации ...

Теперь я хочу, чтобы отключить режим пейзажа только одной точки зрения.

Я попытался следующие на конкретном контроллере представления:

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 


- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

К сожалению, без успеха ...


Edit:

Структура моего приложения является :

UITabBarController 
    UINavigationController 
     UITableViewController 
      UIViewController 
+0

Это вид встроен в контроллер навигации? –

+0

@JoshGafni Да, это под просмотр ... –

ответ

1

Вы указали код выше в ViewController вида или NavigationController? Вы должны поместить его в контроллер навигации, иначе контроллер навигации будет вращаться, в результате чего вид будет вращаться. Подкласс UINavigationController и переопределить shouldAutoRotate:

- (BOOL)shouldAutorotate 
{ 
    id currentViewController = self.topViewController; 

    if ([currentViewController isKindOfClass:[ViewController class]]) 
     return NO; 

    return YES; 
} 

Следовательно, навигационный контроллер только будет вращаться, если отображается вид является вид вы не хотите, чтобы повернуть.

EDIT

Внутри UITabBarController:

- (BOOL)shouldAutorotate 
{ 

    if([self.selectedViewController isKindOfClass:[UINavigationController class]]){ 

     UINavigationController *navigationController = (UINavigationController *) self.selectedViewController; 
     id currentViewController = navigationController.topViewController; 

     if ([currentViewController isKindOfClass:[ViewController class]]) 
      return NO; 
     } 
    } 
    return YES; 
} 
+0

Спасибо за ваш быстрый ответ! Добавил ваш код в NavigationController - но ничего не произошло ... Я добавил структуру приложения к вопросу - может быть, есть проблема? –

+0

Я добавил точку останова к функции shouldAutorotate и не вызывается, если открыть таблицу (на вкладке) ... –

+0

Собственно держись. Что именно вы хотите добиться. Вы хотите, чтобы вкладки вращались, а вид внутри - нет? Вы хотите, чтобы навигационная панель тоже вращалась? –

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