使用UserNotifications呈现ViewController didReceive响应

问题描述:

我有一个LocalNotification类,其中实现了UserNotifications。我在我最初的ViewController和我需要呈现的CheckViewController之间创建了segue。这是我的didReceive responce FUNC使用UserNotifications呈现ViewController didReceive响应

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { let storyboard = UIStoryboard(name: "Main", bundle: nil) let nav = storyboard.instantiateInitialViewController() as! UINavigationController let mainViewController = nav.topViewController as! ViewController mainViewController.performSegue(withIdentifier: "CheckSegue", sender: nil) }

但还是我得到 - 是初始的ViewController。我在哪里错了?

MainViewController inital view controller?如果是这样,您看到的实例是应用程序的根。您正在创建一个不可见的全新实例。

尝试

let nav = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController 

代替

let nav = storyboard.instantiateInitialViewController() as! UINavigationController 
+0

它的工作原理!谢谢 – L1GhTUA

+0

但是如果我不在初始视图中,我得到一个错误 – L1GhTUA

+0

是的,您可能需要先导航回初始视图才能使其工作 - 也许将导航控制器弹出到其根目录,重新回到最初的观点,然后执行赛格? – Samantha