如何从swift3

时间:2017-05-26 09:25:15

标签: ios swift swift3

我有4个视图控制器,假设A,B,C,D。 ViewController D位于顶部,单击按钮我必须转到ViewController A并删除所有剩余的ViewControllers。如何实现这个

3 个答案:

答案 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)
    }
}