我有这样的导航控制器架构:
(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)
答案 0 :(得分:1)
如何在不显示(A)的情况下从(C)打开(D)
将D推到C上
之后,当我使用(D)中的后退按钮时,我需要打开(A)
在压入之后,立即调用setViewControllers
来从堆栈中不可见地删除B和C。您只剩下A和D。因此,“后退”按钮将从D到A,因为堆栈上没有其他东西。
答案 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