У меня есть UITabBarController
, управляющий несколькими UIViewControllers
, которые отображают разные UIViews
.
ВСЕ, НО ОДИН из видов должен отображаться ТОЛЬКО В РЕЖИМЕ ПОРТРЕТА, без возможности поворота, в то время как ТОЛЬКО ОДИН ВИД должен отображаться ТОЛЬКО в РЕЖИМЕ ЛАНДШАФТА, без возможности поворота.
Это кажется тривиальным, но я не могу этого достичь ... Либо все виды в портретном режиме, либо все в горизонтальном режиме. Они либо все вращаются, либо ни один из них не делает.
Ниже приведен код для альбомного представления, но компилятор полностью игнорирует инструкции, и представление поворачивается в портретный режим при повороте устройства.
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}
-(BOOL) shouldAutorotate
{
return NO;
}
Единственный способ остановить автоповорот - установить флажок в Device Orientation
в IB, но затем настройка применяется ко ВСЕМ видам, и ни один из них не поворачивается.
Я читал, что в последнее время больше нельзя применять индивидуальные настройки к каждому представлению, что кажется абсурдным.
Есть ли обходной путь?
Отредактировано с дополнительной информацией:
@ManWithBeard, я не могу понять, как адаптировать ваш код к моему .. Мой UITabBarController управляет различными UIViewController, определенными в их заголовках следующим образом:
@interface Portrait_ViewController : UIViewController
@interface LandscapeViewController : UIViewController
AppDelegate обращается к первому контроллеру вида с
[self.tabBarController setSelectedViewController: Portrait_ViewController]
и затем из любого ViewContoller я перехожу к нужному с помощью
[self.tabBarController setSelectedIndex:index]
Я не понимаю, как применить UITabBarController
к UIViewControllers с @interface ChildOrientationTabBarController : UITabBarController
, как вы предложили.