0

我正在我的应用程序中实现通知,当用户按下通知时,我无法弄清楚如何转到特定的视图控制器。从 iOS 13 开始,我的应用程序正在使用 SceneDelegate,但函数:userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)仅在 AppDelegate 中被调用。

当我的应用程序使用 SceneDelegate 时,当用户点击通知时,如何转到特定的视图控制器?我在网上找到的所有资源都涉及 iOS 12 或更低版本,您可以从 AppDelegate 中选择视图控制器。

4

1 回答 1

2

有几种方法,一种简单的方法是通过 NotficationCeneter 发布通知。

NotificationCenter.default.post(name: Notification.Name("SOME_NAME"), object: nil, userInfo: nil)

你应该为这个通知添加一个观察者。

 NotificationCenter.default.addObserver(self, selector: #selector(someMethod(notification: )), name: Notification.Name("SOME_NAME"), object: nil)

也有不同的选择

例如,我创建了一个简单的 Navigator 类,它是 Singleton,它保留了顶部 NavigationController 以及有关当前视图堆栈的所有知识。如果我需要从 AppDelegate 打开一些特定的屏幕,我正在使用类似的东西:

MyNavigator.shared.goToSomeScreen()

尽管如此,一切都取决于您当前的代码是什么以及您的需求是什么,确保您可以找到更适合您的东西。

于 2020-04-12T10:10:11.463 回答