Swift. NavigationController. Условно изменить порядок дочерних viewControllers
Если у меня есть раскадровка с navigationController с 2 дочерними viewController (vcA и vcB), где vcA установлен в качестве корневого viewController navigationController, а сценарий раскадровки соединяет vcA с vcB (vcA и vcB показывают альтернативные способы просмотра того же объекта).
Разумный ли это шаблон проектирования (и если да, то как мне это сделать), чтобы изменить порядок дочерних viewControllers в стеке навигации, когда приложение запускается в зависимости от предпочтений пользователя. Если пользователь предпочитает просматривать объект так, как он представлен в vcB, могу ли я каким-то образом переопределить порядок в раскадровке и сделать vcB корневым viewController для navigationController при запуске приложения. Поэтому, если пользовательские предпочтения - это "представление vcB", порядок navigationControllers - это navigationController -> vcB <-> vcA по сравнению с обычным, где порядок navigationController - это navigationController -> vcA <-> vcB.
В идеале я хочу сохранить раскадровку, чтобы помочь с настройкой кнопок панели навигации и т. Д.
Если это невозможно или не рекомендуется, каков рекомендуемый способ условно показать пользователям другой дочерний viewController navigationController при запуске приложения.
1 ответ
Вы должны быть в состоянии сделать это:
1) В дополнение к сегментам, показанным на вашем изображении, создайте еще одну передачу Push от navController до vcB и еще одну push sugue из vcA в vcB.
2) Используйте executeSegue(withIdentifier: "segue_name", sender: self) для условной загрузки vcA или vcB при запуске.
3) Используйте executeSegue в vcA и vcB для перехода друг к другу на основе одинаковых условий.