2017-05-26 107 views
1

我有4个视图控制器假设A,B,C,D。 ViewController D在顶部,点击按钮我必须去ViewController A并删除所有剩下的ViewController。如何实现这个如何从swift3删除所有viewControllers除堆栈之外

+0

您正在使用导航控制器或添加一个孩子控制器? –

+0

请提供更多信息...这是什么“堆栈”? – Alladinian

+0

如果我理解正确,就像[self.navigationController popToRootViewControllerAnimated:YES];应该管用! –

回答

2
self.navigationController.popToRootViewController(animated: true) 
0

如果你正在寻找一个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

0

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)