iOS Deeplink到特定的ViewController保留视图控制器堆栈
我正在为我的一个客户开发一个应用程序,他们希望能够从被终止的应用程序中深入链接到特定的视图控制器。以下是当前堆栈:iOS Deeplink到特定的ViewController保留视图控制器堆栈,ios,iphone,swift,deep-linking,Ios,Iphone,Swift,Deep Linking,我正在为我的一个客户开发一个应用程序,他们希望能够从被终止的应用程序中深入链接到特定的视图控制器。以下是当前堆栈: 发射屏幕 启动屏幕(这里是我们下载配置文件的地方) VC1 VC2 VC3 VC4 VC5 客户端希望能够通过deeplink启动应用程序,并在初始屏幕完成配置文件下载后导航到特定的视图控制器(VC1-VC5)。问题是他们想要保留堆栈。所以我不能简单地从启动屏幕上推VC5,因为VC5需要返回到VC4而不是VC3而不是VC2,等等 处理这个问题的最佳方法是什么?任何帮助都将不胜感
- 发射屏幕
- 启动屏幕(这里是我们下载配置文件的地方)
- VC1
- VC2
- VC3
- VC4
- VC5
处理这个问题的最佳方法是什么?任何帮助都将不胜感激。提前谢谢 可以使用UINavigationController setViewControllers方法一次设置所有导航堆栈。只需创建每个视图控制器的一个实例,并将其传递给导航控制器,如下所示:
navController.setViewControllers([vc1, vc2, vc3, vc4, vc5], animated: true)
请注意,这将覆盖导航堆栈中当前的所有视图控制器。vc1将成为导航控制器的根vc。如果你有一个故事板,那么你可以有不同的序列转到不同的vc,你可以在appDelegate中添加一个标志。如果应用程序通过url方案启动,则设置此标志。在每次VC viewDidLoad检查该标志时,只需按下较低级别的VCI即可启动应用程序,打开VC1,等待某个方法完成—比如下载上面提到的配置文件OP—然后在这种情况下转换到traget VC-VC5?是的,您可以将视图控制器堆栈设置为任何您想要的。下载配置文件后,在准备转换时调用上述方法。无论数组中最后一个vc是什么,都将显示它。