Как перейти к parentViewController, если вы нажимаете и представляете несколько viewController?
У меня есть родительский контроллер tabBar, и я использую контроллер представления с навигацией. затем представив два других вида контроллеров выше. это как Tabbar(homeController) -> Child1(push) -> Child 2(представляет) -> child3(представляет). и я отклонить мой последний childViewController, используя таймер. когда его увольнение я хочу вернуться к tabBarController(дома).
let parent = self.presentingViewController
self.dismiss(animated: false, completion: {
parent?.present(vc, animated: true, completion: nil)
})
Я поместил этот код в мой 2-й дочерний ViewController. Но вернемся к child1 viewContoller. нужна помощь здесь
3 ответа
Если вы используете раскадровку, то сначала настройте режим раскрутки на контроллере представления, к которому вы хотите вернуться (так, чтобы в данном случае tabBarController), вот так:
@IBAction func unwindToTop(segue:UIStoryboardSegue) { }
(вы можете называть это как хотите, пока вы начинаете "разматывать")
Затем в конструкторе интерфейсов создайте последовательность отката (либо непосредственно от объекта, такого как кнопка, либо более общий вид от самого контроллера представления) к выходу контроллера представления и выберите последовательность развертки, которая должна появиться в списке.
Затем, когда будет выполнен этот переход, либо с помощью элемента раскадровки, либо вручную в коде, вы вернетесь к контроллеру представления, который определил переход с обратной стороны. Система сделает весь обратный путь за вас.
Наконец нашел еще один вариант здесь.
self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
Выше код будет отклонять все представленные ViewControllers. Если вы укажете это как минимум ребенок (ребенок 3 в моем случае), он автоматически уволит моего ребенка 2, ребенка 3.
let parentVC = self.presentingViewController
if let tabParent = parentVC as? UITabBarController, let firstNav = tabParent.viewControllers![0] as? UINavigationController {
//present child 2
self.present(vc, animated: true, completion: {
firstNav.popToRootViewController(animated: false)// pop to my rootVC
})
}
Вы должны проверить метод popToRootViewController.