如何在SwiftUI中从APN单击导航到某些视图?

时间:2020-06-12 05:45:31

标签: swiftui swiftui-navigationlink

在swift 5和UIKit中,在单击apn时,我一直在通过获取顶视图控制器将其推到所需的视图控制器,并将所需的视图控制器推到顶视图控制器之上。

但是在SwiftUI中,我无法做到这一点。如何在SwiftUI中从APN导航。

我不必将所需的控制器设置为窗口根控制器。我想将所需的控制器推到顶视图控制器上。我只想通过apns点击将其推送到控制器。

我要在此委托方法中单击apns:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
}

1 个答案:

答案 0 :(得分:1)

您可以在SceneDelegate中添加自己的方法。创建SceneDelegate对象,将其窗口设置为rootViewController。

extension SceneDelegate{

func loginViewController() {

 let loginView = LoginView()

 let sceneDelegate = UIApplication.shared.connectedScenes.first?.delegate as? 
 SceneDelegate
 sceneDelegate?.window?.rootViewController = UIHostingController(rootView: 
 loginView)

 }
}

并调用如下方法:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

//Call method here 
let sceneDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate
sceneDelegate?.loginViewController()

}