Допустим, у меня есть пять контроллеров представления, и я хочу перейти к конкретному контроллеру представления.
RootViewController ==> FirstViewController ==> SecondViewController ==> ThirdViewController ==> FourthViewController (модально представлен с кнопкой) и все другие контроллеры, которые я подключил с помощью метода push. Моя задача - я хочу перейти к firstViewController из FourthViewController при нажатии кнопки. Любая помощь?
for controller in self.navigationController!.viewControllers as Array {
if controller.isKind(of: HomeViewController.self) {
self.navigationController!.popToViewController(controller, animated: true)
break
}
}
Это код, который я написал.
2 ответа
Добавьте делегата в FourthViewController:
self.dismiss(animated: true) {
self.delegate.popToFirstVC()
}
Добавьте func popToFirstVC()
в ThirdViewController. Используйте popToViewController:
func popToFirstVC() {
if let firstViewController = self.navigationController?.viewControllers[1] {
self.navigationController?.popToViewController(firstViewController, animated: true)
}
}
Или лучше
guard let viewControllers = self.navigationController?.viewControllers else {
return
}
for firstViewController in viewControllers {
if firstViewController is FirstViewController {
self.navigationController?.popToViewController(firstViewController, animated: true)
break
}
}
Есть еще такой вариант. Добавьте наблюдателя для этой функции и при необходимости вызовите. Но я бы сделал это только в самых крайних случаях.
func popToThisVC() {
if let topController = UIApplication.topViewController() {
topController.navigationController?.popToViewController(self, animated: true)
}
}
Вы упомянули connected, поэтому я считаю, что вы использовали раскадровки и переходы, в таком случае почему бы не создать раскручивающий переход? Немного сложно показать вам фрагмент перехода от раскрутки здесь только с помощью текста, но я думаю Размотать блог с медиума, есть ваш ответ
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.