从AppDelegate添加3D Touch Quick Actions

时间:2017-10-18 19:57:58

标签: ios swift

这就是我的应用程序的结构。

MainViewController (UITabViewController) --> VC1 (UIViewController) --> AddVC (UIViewController)  
                                         --> VC2 (UIViewController)  
                                         --> VC3 (UIViewController)

我想向我的应用添加快速操作,因此当我从AddVC按动作按钮时,我可以访问AppDelegate
VC1有一个添加按钮,使用segue转到AddVC

这就是我要尝试的方法:创建AddVC视图控制器,然后MainViewController,然后从中检索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视图控制器,但不转到performSegue,因此不执行segue。
我也尝试在DispatchQueue内使用45,效果相同。

任何人都知道如何才能完成这项工作?

1 个答案:

答案 0 :(得分:0)

我猜这是一个时间问题。

测试的hacky方法只是将你的Dispatch延迟一秒钟(或者你的应用程序需要多长时间才能启动)并查看它是否有效。

更好的解决方案是在shouldGoToAddVC添加VC1标记,在present之后添加viewDidAppear