ios - 从未打开的 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)
}
}
解决方案
您无法从尚未加载的情节提要中分离。
根据您的情况,您可以:
1:将数据从 AppDelegate 发送到当前故事板的初始根视图控制器,然后根据数据从那里创建多个 segue 到可敬的 VC。
或者
2:创建多个故事板(每个案例一个)并根据通知从 AppDelegate 启动相应的故事板。
编辑:需要看故事板。对于变量,将其添加到 conversationTableViewController 并在您呈现它之前进行设置:
controller.myVar = "someValue"
self.window.rootViewController = controller
self.window.makeKeyAndVisible()
推荐阅读
- vba - 如果单元格的单元格值不以数字开头,如何删除整行
- aws-codebuild - 执行脚本,即使它们在 yml 文件中失败
- c# - 在 VSCode 中使用 TestContext.Datarow 的问题
- vba - excel vba Ubound/Lbound错误
- sass - WebStorm:Foundation 项目不会编译默认的 SCSS 文件
- python - 将 scipy.stats.kde gaussian_kde 函数应用于每个网格单元
- vba - VBA - 如何用列标题替换非零值?
- python - Python - Django - 通用字段模型设计
- javascript - 将 div 移出屏幕
- php - 是否可以使用 PHP 将小写字母转换为大写字母并删除同一函数中的重音符号?