Как перейти к 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.

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621855-poptorootviewcontroller

Другие вопросы по тегам