У меня есть UITabBarController, и каждая вкладка обрабатывает другой UIViewController, который при необходимости нажимает на новые контроллеры стека. В двух из этих вкладок мне нужно, когда достигнут определенный контроллер, возможность поворачивать iPhone и визуализировать представление в ландшафтном режиме. После многого боя я обнаружил, что обязательным подклассифицированием UITabBarController является переопределение shouldAutorotateToInterfaceOrientation. Однако, если я просто вернусь ДА в ходе реализации, возникает следующий нежелательный побочный эффект:tabBarController and navigationControllers в ландшафтном режиме, эпизод II
Каждый контроллер на каждой вкладке автоматически помещается в ландшафтном режиме при повороте iPhone.
Даже переопределение должно быть активировано для каждого элемента управления. В каждом контроллере возврат НЕТ не работает: при повороте iPhone контроллер переключается в альбомный режим.
Я реализовал shouldAutorotateToInterfaceOrientation следующим образом в подклассах UITabBarController:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
return YES;
return NO;
}
, так что только две вкладки Я заинтересован в самом деле получить поддержку ландшафтного режима. Есть ли способ поддержать ландшафтный режим для конкретного контроллера в стеке определенной вкладки?
Я пытался, но безуспешно, что-то вроде
(BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
{
if ([[self selectedViewController] isKindOfClass: [landscapeModeViewController class]])
return YES;
}
return NO;
}
Кроме того, я попытался с помощью метода делегата didSelectViewController, без успеха , Любая помощь очень ценится. Спасибо.
Богатый, большое спасибо. Предлагаемое решение работает как шарм ;-) Эта проблема сводила меня с ума! Я не понимал, что правильный способ сделать это также требует одновременной проверки для visibleViewController. Отличный ответ! –