Проблема:
Вкладка 1: у меня есть UINavigationController внутри первой вкладки. Внутри этого контроллера навигации я помещаю несколько контроллеров представлений в стек навигации, создавая «стек» представлений.
Вкладка 2: у меня есть еще одна вкладка с собственным UINavigationController. Когда я переключаюсь с вкладки 1 на вкладку 2, предыдущий стек навигации (из вкладки 1) остается видимым, в результате чего контроллер корневого представления новой вкладки не отображается должным образом.
Цель:
Я хочу плавно переключаться между вкладок, гарантируя, что при переключении с одной вкладки на другую представления из стека навигации предыдущей вкладки будут очищены. Переход должен выглядеть плавным: UINavigationController новой вкладки обрабатывает навигацию из своего корневого контроллера представления.
Настройка:
Я использую раскадровки для настройки представлений.
Я использую собственный подкласс UITabBarController для управления логикой панели вкладок.
Каждая вкладка имеет свой собственный UINavigationController в качестве корневого контроллера представления.
Диаграмма для лучшего понимания понимание:
Код: Выделить всё
Tab 1 (with UINavigationController)
+---------------------------------------------------------+
| Root ViewController |
| +--------------------------------+ |
| | VC 1 | |
| +--------------------------------+ |
| | VC 2 | |
| +--------------------------------+ |
| | VC 3 | |
| +--------------------------------+ |
+---------------------------------------------------------+
Tab 2 (with UINavigationController)
+---------------------------------------------------------+
| Root ViewController |
| +--------------------------------+ |
| | VC A | |
| +--------------------------------+ |
| | VC B | |
| +--------------------------------+ |
+---------------------------------------------------------+
Когда я переключаюсь с вкладки 1 (с VC 3 на вершине стека) на вкладку 2, я хочу, чтобы представления из UINavigationController вкладки 1 были удалены , и я хочу начать заново с корневого контроллера представления навигационного контроллера Tab 2.
Моя попытка:
Я пробовал использовать popToRootViewController(animated: true) при выборе вкладки, но это не работает должным образом, поскольку стек навигации не очищается достаточно быстро для перехода, и я все еще вижу предыдущие представления.
Вопрос:Как я могу гарантировать, что предыдущий стек навигации очищается при переключении вкладок, чтобы на новой вкладке отображался контроллер корневого представления без каких-либо задержек со старой вкладки?
Как я могу сделать переключение вкладок плавным и естественно, поэтому это похоже на правильный переход между вкладки?
Ожидаемое поведение:
При переключении вкладок контроллеры представления предыдущей вкладки (в стеке UINavigationController) должны быть удалены.
На новой вкладке должен отображаться ее корень. контроллер представления без каких-либо ранее отправленных представлений из старой вкладки.
При переключении вкладок контроллеры представления предыдущей вкладки (в стеке UINavigationController) должны быть удалены.
Новый tab должен отображать свой корневой контроллер представления без каких-либо ранее отправленных представлений со старой вкладки.
Подробнее здесь: https://stackoverflow.com/questions/792 ... s-and-remo
Мобильная версия