В моем приложении иерархия контроллера представления настроена так:
UITabBarController
|
UINavigationController
| |
| UIViewController
|
UINavigationController
|
UIViewController
Все мои контроллеры представления, которые находятся в этой иерархии, переопределяют метод:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
и возврат YES
- поэтому контроллер вида должен иметь возможность вращаться на любом повороте - даже вверх ногами.
Однако в этой настройке ни один из контроллеров представления не успешно вращается. У меня сложилось впечатление, что контроллеры навигации и панели вкладок будут вращаться, если их контроллеры представления будут реагировать на вращение.
Почему мои контроллеры вида не вращаются?
Единственный способ заставить их вращаться - это создать подкласс UINavigationController
и переопределить его shouldAutorotate
метод, но мне это не нужно, и мне было интересно, если я что-то упустил, чтобы сделать это работа.
Edit:
В соответствии с практическими рекомендациями по кодированию:
Если вы также используете панель инструментов, контроллер представления для каждого элемента панели инструментов должен реализовывать метод shouldAutorotateToInterfaceOrientation: и возвращать YES для каждой ориентации, которую вы хотите поддерживать. Если у вас есть контроллер навигации для элемента панели инструментов, контроллер корневого представления этого контроллера навигации должен реализовать метод shouldAutorotateToInterfaceOrientation: и вернуть YES.
Там написано «панель инструментов» - но я думаю, что это опечатка и, вероятно, предполагается, что это «панель вкладок».
Так что, похоже, я правильно это реализую, но мои контроллеры все еще не вращаются автоматически.