从navigationController中解除时,如何跳过ViewController?

时间:2016-10-17 16:12:24

标签: ios swift uiviewcontroller

假设你有一些像以下的ViewControllers:

A --> B --> C --> X --> D

X是某种可以从任何地方打开的永久菜单。所有这些都被插入到NavigationController,所以为了回去,我会做类似的事情:

func leftNavButtonClick(sender: UIButton) { navigationController?.popViewControllerAnimated(true) }

但是,如果我从D执行此操作,我想返回C,而不是X。我尝试在打开下一个ViewController之前解雇菜单,但这看起来效果不是很好。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用视图控制器堆栈查找VC并弹出

if let vcStack = self.navigationController?.viewControllers
        {
            for vc in vcStack {
                        if vc.isKindOfClass(MyVC)
                        {                           
                            self.navigationController?.popToViewController(vc, animated: true)
                            break
                        }
                    }
        }