如何从swift3删除所有viewControllers除堆栈之外
问题描述:
我有4个视图控制器假设A,B,C,D。 ViewController D在顶部,点击按钮我必须去ViewController A并删除所有剩下的ViewController。如何实现这个如何从swift3删除所有viewControllers除堆栈之外
答
self.navigationController.popToRootViewController(animated: true)
答
如果你正在寻找一个viewController在堆栈中。我还添加了代码,如果你找不到,在在堆栈中的堆栈转到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)
}
}
+0
这是你在找什么? – Prateekro
答
的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)
您正在使用导航控制器或添加一个孩子控制器? –
请提供更多信息...这是什么“堆栈”? – Alladinian
如果我理解正确,就像[self.navigationController popToRootViewControllerAnimated:YES];应该管用! –