[英]Add 3D Touch Quick Actions from AppDelegate
这就是我的应用程序的结构。
MainViewController (UITabViewController) --> VC1 (UIViewController) --> AddVC (UIViewController)
--> VC2 (UIViewController)
--> VC3 (UIViewController)
我想向我的应用程序添加快速操作,因此当我从AppDelegate
按下操作按钮时,可以访问AddVC
。
VC1
有一个Add按钮,该按钮使用segue转到AddVC
。
这就是我要尝试的方式:创建AddVC
视图控制器,然后创建MainViewController
并从中检索VC1
,并尝试使用该VC1
呈现AddVC
屏幕。
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
let vc = storyboard.instantiateViewController(withIdentifier: "AddVC") as! AddVC
switch shortcutItem.type {
case "Add":
let mainVC = app?.getRootViewController() as! MainViewController
let vc1 = mainVC.getVC1()
DispatchQueue.main.async {
vc1?.present(vc, animated: true, completion: nil)
}
}
当我这样做时,它总是转到VC1
视图控制器,而不转到AddVC
,因此不会执行segue。
我也尝试在DispatchQueue
内使用performSegue
,效果相同。
任何人都知道我该如何进行这项工作?
我猜这是一个时间问题。
测试的骇客方式只是将您的Dispatch
延迟一秒钟(或启动应用程序需要花费很长时间),然后查看它是否可以正常工作。
更好的解决方案是在VC1
添加一个shouldGoToAddVC
标志,并在viewDidAppear
之后执行present
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.