2017-05-26 50 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)