首页 > 解决方案 > 从未打开的 ViewController 执行 Segue

问题描述

我有一个从 AppDelegate 运行的后台任务,当它需要时它会显示通知。

当这些通知被点击时,它们应该将用户引导到与通知相关的 ViewController。

我想知道是否可以从 AppDelagate 执行转场。

我的 ViewControllers 在导航控制器中。我猜我必须实例化我的根视图控制器并在那里执行 segue,只是不确定如何从 appdelegate 执行此操作。

编辑: 到目前为止,这是我的代码,它可以正常工作,只是没有嵌入到我的导航控制器中

 if let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ConversationVC") as? conversationTableViewController {
            if let window = self.window, let rootViewController = window.rootViewController {
                var currentController = rootViewController
                while let presentedController = currentController.presentedViewController {
                    currentController = presentedController
                }
                currentController.present(controller, animated: true, completion: nil)
            }
        }

标签: iosswiftxcodesegue

解决方案


您无法从尚未加载的情节提要中分离。

根据您的情况,您可以:

1:将数据从 AppDelegate 发送到当前故事板的初始根视图控制器,然后根据数据从那里创建多个 segue 到可敬的 VC。

或者

2:创建多个故事板(每个案例一个)并根据通知从 AppDelegate 启动相应的故事板。

编辑:需要看故事板。对于变量,将其添加到 conversationTableViewController 并在您呈现它之前进行设置:

controller.myVar = "someValue"
self.window.rootViewController = controller
self.window.makeKeyAndVisible()

推荐阅读