首页 > 解决方案 > 从 NavigationController 后退按钮返回多个 ViewController

问题描述

当我单击 NavigationController 上的后退按钮时,我想返回两个 ViewController 而不是一个。

  override func viewWillDisappear(_ animated: Bool)
    {
        super.viewWillDisappear(animated)

        if self.isMovingFromParent
        {
            let vc = self.navigationController?.viewControllers[1] as! MyViewController

            self.navigationController?.popToViewController(vc, animated: false)
        }
    }

这几乎按照我想要的方式工作。更改 self.navigationController?.viewControllers[1] 让我可以转到堆栈中的任何 ViewController。我唯一的问题是它总是在直接转到我弹出的 ViewController 之前短暂地显示最顶层的 viewController。如何阻止它显示中间 ViewController?

我的问题是:

VC[0] → VC[1] → VC[2] → VC[3]

从 3 我想直接返回到 1 而不必显示 2。我想从 NavigationController 后退按钮执行此操作。

标签: iosswiftuinavigationcontrollerpoptoviewcontroller

解决方案


如果堆栈中有 viewController,则可以使用类名返回到它。

let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;
for aViewController in viewControllers {
    if(aViewController is HomeViewController){
       self.navigationController!.popToViewController(aViewController, animated: true);
    }
}

推荐阅读