2013-04-05 2 views
2

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

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (BOOL) shouldAutorotate { 
    return NO; 
} 

примечание: я действительно включил ориентацию влево/вправо/портрет на вкладке «Сводка» цели проекта. любое исправление?

+0

Проверьте это «http://stackoverflow.com/questions/12772749/support-different-orientation-for-only-one-view-ios-6» – Nandha

ответ

2

Создание категории UINavigationController, которые включают в себя следующие методы:

(работает как для IOS 6 и прошивкой 5)

- (BOOL)shouldAutorotate 
    { 
     return self.topViewController.shouldAutorotate; 
    } 

    - (NSUInteger)supportedInterfaceOrientations 
    { 
     return self.topViewController.supportedInterfaceOrientations; 
    } 

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
     return [self.topViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation]; 
    } 

Затем реализации этих методов в контроллерах

Первое:

- (BOOL)shouldAutorotate { 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    if (RUNNING_IPAD) { 
     return UIInterfaceOrientationMaskAll; 
    } 
    else { 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    }; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    if (RUNNING_IPAD) { 
     return YES; 
    } 
    else { 
     return toInterfaceOrientation != UIInterfaceOrientationMaskPortraitUpsideDown; 
    } 
} 

И второе:

- (BOOL)shouldAutorotate { 
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
     return UIInterfaceOrientationMaskPortrait; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
     return NO; 
} 

Параметры вращения проекта должны выглядеть следующим образом:

Settings

+0

Спасибо! я действительно нашел более простой ответ, но я выбираю этот, поскольку он поддерживает как ios 5, так и 6, мой поддерживает только 6. – HusseinB

0

На самом деле я нашел решение моей проблемы:

-(BOOL)shouldAutorotate{ 
    return YES; 
} 

-(NSInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

это ограничит вид на портрет, даже если вы переключили ориентацию влево/вправо на вкладке «Сводка» проекта «Трагет».

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

  • Нет связанных вопросов^_^