Swift - 如何从NavigationController中删除viewcontroller?

时间:2016-11-30 05:53:44

标签: swift xcode

我有4个ViewControllers连接到NavigationController。它们的顺序是1-> 2-> 3-> 4。当用户按下4上的后退按钮时,我希望它们被重定向到2而不是3.同时,我还希望当按下后退按钮时用户被定向回2 。 这可能吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

当然你可以这样做。只需在4th ViewController上创建左栏按钮即可。并在该按钮操作弹出到第二个viewcontroller

      if let viewcontroller = self.navigationController?.viewControllers[1] where viewcontroller.isKindOfClass(YourController) {
       self.navigationController?.popToViewController(viewcontroller, animated: false)          }

答案 1 :(得分:0)

if let vc = self.viewControllerWithClass(YourVC.self) {

                    self.popToViewController(vc, animated: true)
}


extension UINavigationController {

    func viewControllerWithClass(_ aClass: AnyClass) -> UIViewController? {

        for vc in self.viewControllers {

            if vc.isMember(of: aClass) {

                return vc
            }
        }

        return nil
    }
}

答案 2 :(得分:0)

您可以在导航堆栈中检查控制器。

let controllers = navigationController!.viewControllers.reverse()
    for controller in controllers
    {
        if controller.isKindOfClass(YourController)
        {
            self.navigationController?.popToViewController(controller, animated: true)
            return
        }
    }