Если вам не нужно возвращаться на целевую страницу, используйте контроллер представления для целевой страницы и представляйте его модально с навигационного контроллера при запуске приложения.
Итак, вы делаетехочу вернуться на целевую страницу.
С UINavigationController это трудно сделать.Предположим, вы возвращаетесь к виду посадки.При переходе старый вид должен иметь панель навигации, а новый вид (целевую страницу) не должен иметь панель навигации.UINavigationController не позволяет вам вручную изменять анимацию перехода.Другими словами, вы не можете анимировать скрытие / отображение панели навигации вместе с анимацией push / pop (использование viewWillAppear
не решает проблему).
Так что бы я сделал, если бы мне действительно это нужно?
У меня был бы rootViewController (из UIViewController), чье представление является единственным подпредставлением окна вашего приложения.Когда ваше приложение запускается, rootViewController добавляет представление посадки в качестве подпредставления своего представления.Когда пользователь выбирает элемент там, вы создаете UINavigationController с соответствующим контроллером представления в качестве его корневого контроллера представления.
И, используя анимацию CATransition с типом kCATransitionPush и подтипом kCATransitionFromRight, вы добавляете представление навигацииконтроллер как подпредставление представления rootViewController.
Затем вам нужна кнопка «назад» для первого просмотра контроллера навигации.Во всех контроллерах представления, которые являются контроллерами представления первого уровня контроллера навигации, создайте элемент кнопки панели с текстом «Назад» и добавьте его в свое свойство navigationItem.leftBarButton.Задайте для кнопки пару target-action (возможно, rootViewController).
Когда срабатывает сообщение действия, используйте анимацию CATransition (теперь с подтипом kCATransitionFromLeft), чтобы удалить текущее представление контроллера навигации из представления rootViewController.
Переход может выглядеть не так идеально, как нативный UINavigationController, но я считаю, что это лучшее, что вы можете получить.