iPhone ландшафтная навигация назад действие показывает вертикальный переход? - PullRequest
3 голосов
/ 01 июня 2010

У меня есть обычный UINavigationController, и я помещаю серию UIViewController в стек. Переход представления для push-контроллера является горизонтальным анимационным переходом: [self.navigationController pushViewController: контроллер анимирован: ДА];

Однако, когда я нажимаю кнопку «Назад» на панели навигации, анимация перехода вида отображается по вертикали (по вертикали опускается предыдущий контроллер / вид).

Кажется, я не нашел способа сделать это по горизонтали. Это происходит только в ландшафтном режиме. В портретном режиме переход все происходит как горизонтальный переворот.

Кто-нибудь может пролить свет на это?

Спасибо

1 Ответ

6 голосов
/ 16 июня 2010

У меня была такая же проблема. Когда я нажал назад, чтобы перейти к первому виду, я увидел вертикальную анимацию вместо обычной горизонтальной.

Я нашел ответ на основе образца кода Apple NavBar. Я отредактировал пример кода, добавив «shouldAutorotateToInterfaceOrientation» ко всем контроллерам представления, и заставил его вернуть YES.

Когда я запустил его, я заметил, что при нажатии «Назад» была использована правильная анимация.

FIX:

Похоже, вам нужно использовать свой собственный подклассный UIViewController в контроллере навигации и добавить shouldAutorotateToInterfaceOrientation. Предположительно, стандартный UIViewController не возвращает правильную ориентацию, поэтому используется неправильная анимация.

ФОН:

Я проверил все различия между моим кодом и кодом Apple и обнаружил, что мой контроллер навигации является подклассом UINavigationController, где я выполняю всю работу. По умолчанию IB добавил в него UIViewController, и я оставил его в покое. Я заметил, что образец кода NavBar имеет свой собственный набор классов (MainViewController). Поэтому я заставил Xcode создать новый подкласс UIViewController без xib, а затем настроил его в опции Class на панели Identity в IB.

Надеюсь, это имеет смысл и поможет!

...