我有4个视图控制器,假设A,B,C,D。 ViewController D位于顶部,单击按钮我必须转到ViewController A并删除所有剩余的ViewControllers。如何实现这个
答案 0 :(得分:3)
self.navigationController.popToRootViewController(animated: true)
答案 1 :(得分:1)
UINavigationController
的viewControllers属性是get set
属性,这意味着您可以编写自己的视图控制器数组。
例如,
let VCs = self.navigationController.viewControllers //VCs = [A, B, C, D]
let vcA = VCs[0] //vcA = A
//finally
self.navigationController.viewControllers = [vcA] //done
// OR
self.navigationController.setViewControllers([vcA], animated: true)
答案 2 :(得分:0)
如果您正在堆栈中查找一个viewController。我还添加了代码,如果你在堆栈中找不到一个控制器goto mainController或堆栈中的firstController:
if let viewControllers = self.navigationController?.viewControllers {
var element_count = 0
for controller in viewControllers {
if controller is YourViewController {
element_count = 1
self.navigationController?.popToViewController(controller, animated: true)
break
}
}
if element_count != 1{
_ = self.navigationController?.popToRootViewController(animated: true)
}
}