Кажется, нет способа сделать это использование зарегистрированных методов.
я зарегистрировал ошибку для этого: rdar://6399924
"Нет никакого способа всегда ограничить UIViewController одной ориентацией",
Вы видите его на открытом радаре (наряду со ссылкой на пример кода для репродуцирования проблемы) здесь: http://openradar.appspot.com/radar?id=697
Я не смог заставить это прокладывать себе путь, я хотел. Необходимо смочь установить конкретную ориентацию для ViewController, но NavigationController, кажется, всегда не делает правильную вещь.
я закончил перепроектирование моих экранов так, чтобы они все работали в любой ориентации. Это могло бы быть дополнительной работой, но это "чувствует себя" более естественным, так или иначе.
Как кто-то на открытом предложенном радаре, обходное решение должно отключить "назад" кнопку в то время как в непортрете:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
// don't let user press "back" button in landscape - otherwise previous view and the rest of the application
// will also be in landscape which we did not feel like testing yet
self.navigationController.navigationBarHidden = (UIInterfaceOrientationPortrait != self.interfaceOrientation);
}