从未打开的 ViewController 执行 Segue
Posted
技术标签:
【中文标题】从未打开的 ViewController 执行 Segue【英文标题】:Perform Segue from ViewController that isn't open 【发布时间】:2018-09-18 14:19:45 【问题描述】:我有一个从 AppDelegate 运行的后台任务,它会在需要时显示通知。
当这些通知被点击时,它们应该将用户引导到与通知相关的 ViewController。
我想知道是否可以从 AppDelagate 执行转场。
我的 ViewController 位于导航控制器中。我猜我必须实例化我的根视图控制器并在那里执行 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)
【问题讨论】:
你介意分享一个代码 sn-p 以便我们都能看到你在说什么。这将简化我们帮助您解决问题的流程。 没有代码sn-p可以分享,问题不需要。 看看这个:medium.com/@stasost/… 【参考方案1】:您无法从尚未加载的情节提要中转出。
根据您的情况,您可以:
1:将数据从 AppDelegate 发送到当前情节提要的初始根视图控制器,然后根据数据为可敬的 VC 创建多个 segue。
或
2:创建多个故事板(每个案例一个)并根据通知从 AppDelegate 启动相应的故事板。
编辑:需要查看情节提要。对于变量,将其添加到 conversationTableViewController 并在您呈现它之前进行设置:
controller.myVar = "someValue"
self.window.rootViewController = controller
self.window.makeKeyAndVisible()
【讨论】:
以上是关于从未打开的 ViewController 执行 Segue的主要内容,如果未能解决你的问题,请参考以下文章