Очистить стек навигации viewcontroller - PullRequest
0 голосов
/ 28 мая 2018

У меня есть tabBarController с четырьмя вкладками.На каждой вкладке я могу перемещаться по серии контроллеров представления.И на последнем контроллере представления у меня есть кнопка «Готово», щелкнув по которой, я должен быть перенаправлен на мой начальный tabBarController.Код, который я сейчас использую для этого, выглядит следующим образом (при нажатии кнопки).

let storyboard = UIStoryboard.init(name: "Main", bundle: Bundle.main)
if let tabViewController = storyboard.instantiateViewController(withIdentifier: "TabBarController") as? UITabBarController {
    self.navigationController!.pushViewController(tabViewController, animated: false)
}

Но я чувствую, что это неверный способ, поскольку стек навигации продолжает добавляться.Вместо этого я хотел бы очистить стек навигации и показать первый tabBarController в стеке.Как я могу решить это?

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Я думаю, установка корневого контроллера решит вашу проблему.

if let window = UIApplication.shared.keyWindow {
   let tabVC = UINavigationController(rootViewController: tabViewController())
   window.rootViewController = tabVC
}
0 голосов
/ 28 мая 2018

Использовать доступный метод >>

func popToRootViewController (animated: Bool) -> [UIViewController]?

Этот метод очищает стек и помещает вас в кореньПосмотреть контроллер, пожалуйста, прочитайте документацию для деталей

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621855-poptorootviewcontroller?changes=_4

0 голосов
/ 28 мая 2018

сделайте ваш первый viewController вашим корневым контроллером представления, затем нажмите кнопку

self.navigationController?.popToRootViewController(animated: true)
...