Я работаю над iOS 6.1 и 7.0. Поведение одинаково для обоих из них. Контроллер корневого представления - UIVeiwController
. Он имеет свойство UINavigationViewController
, которое управляет всеми отображаемыми контроллерами в моем приложении. Я подклассифицировал UINavigationController
и перегрузил shouldAutorotate
и supportedInterface
методами вращения, чтобы получить правильные ориентации каждого контроллера, нажатого в нем.Контроллер UINavigation не уведомлен о правильных событиях.
Что я хочу: Нажимаем на навигацию 3 контроллера, второй контроллер должен быть только в портретной ориентации.
Что я получаю: Когда я толкая второй контроллер он все еще находится в ландшафтном режиме, несмотря на это supportedInterfaceOrientation
метод возвращает портретный режим, а затем нажмите третий контроллер и поставить тренажер или устройство в ландшафтном режиме и поп-музыки до моего второго контроллера, здесь самое интересное, что он уходит с экрана ...
Мое предположение В документации Apple говорится, что только один контроллер верхнего уровня будет уведомлен о поворотах, поэтому, когда я создаю корень контроллера навигации, он работает правильно, когда я делаю поп от третьего контроллера до второго, но все же не работает при нажатии от первого до второго. В любом случае мне нужно решить эту проблему с моей структурой, когда контроллер навигации является только свойством контроллера корневого представления.
Вот ссылка проекта https://github.com/Trubianov/Navigation.git
Это не совсем правильно. «UINavigationController» иногда переопределяет настройки ориентации своих дочерних элементов. Я не играл с ним широко, но мне пришлось подклассифицировать UINavigationController для отображения только в портретном режиме, но в моем случае весь стек этого контроллера навигации должен был быть в портрете. Я не слишком хорошо знаком с настройками смешивания в стеке VC, но моя рекомендация по-прежнему должна быть очень уверена, что вам нужно заставить ориентацию только в одном VC –