我有这样的导航控制器模式:

(A)RootVC
    |
    -(B)ChildVC_1
    |    |
    |    -(C)ChildVC_1_2
    |
    -(D)ChildVC_2

我需要从(C)开始(D)。我在(C)中使用代码:
navigationController?.popToViewController(...)
rootVC.performSegue(withIdentifier: "ChildVC_2", sender: nil)

它工作正常。除了一个问题:首先我看到(A)和只有在那之后,(D)出现在屏幕上。
问题是:如何从(C)中打开(D)而不显示(A)?
另外,在那之后,当我使用来自(D)的后退按钮时,我需要打开(A)

最佳答案

您可以尝试给每个vc一个故事板标识符并加载它,然后分配navigationController的viewControllers属性

let rootVC = storyboard!.instantiateViewController(withIdentifier: "rootId")
let dVC = storyboard!.instantiateViewController(withIdentifier: "dId")
self.navigationController?.setViewControllers([rootVC,dVC],animated:true) // set it to false if you want

10-01 17:25