显示另一个没有父项的导航子项控制器

时间:2018-09-15 16:52:14

标签: ios swift uikit

我有这样的导航控制器架构:

(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)出现在屏幕上。

问题是:如何在不显示(A)的情况下从(C)打开(D)? 另外,在那之后,当我使用(D)中的“后退”按钮时,我需要打开(A)

2 个答案:

答案 0 :(得分:1)

  

如何在不显示(A)的情况下从(C)打开(D)

将D推到C上

  

之后,当我使用(D)中的后退按钮时,我需要打开(A)

在压入之后,立即调用setViewControllers来从堆栈中不可见地删除B和C。您只剩下A和D。因此,“后退”按钮将从D到A,因为堆栈上没有其他东西。

enter image description here

答案 1 :(得分:0)

您可以尝试为每个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