AppDelegate 和 ContentView() 之间的 SwiftUI 通信
Posted
技术标签:
【中文标题】AppDelegate 和 ContentView() 之间的 SwiftUI 通信【英文标题】:SwiftUI communication between AppDelegate and ContentView() 【发布时间】:2020-05-16 05:01:15 【问题描述】:我在 SwiftUI 应用程序上收到了一个静默远程通知。它不是由 UNUserNotificationCenter 拾取的,而是由旧的 AppDelegate didReceiveNotification 函数拾取的。通知 ContentView() 发生更改的解决方案是什么? AppDelegate 中的 ObservableObject?
【问题讨论】:
【参考方案1】:您可以在 AppDelegate 中声明一个符合 ObservableObject
的商店,并将其设置为 ContentView 的环境对象。
// AppDelegate.swift
// in the class
let store = Store()
// in the applicationDidFinishLaunching(_:) method
window.contentView = NSHostingView(rootView: contentView.environmentObject(store))
// ContentView.swift
// in the struct
@EnvironmentObject var store: Store
环境对象是一个引用,因此您可以将值传递给它。与使用ObservableObject
相同。完成更新后,只需调用objectWillChange.send()
或将属性标记为@Published。 ContentView 将在通知后更新。
【讨论】:
以上是关于AppDelegate 和 ContentView() 之间的 SwiftUI 通信的主要内容,如果未能解决你的问题,请参考以下文章
Swiftui: MacOS App: Fetching Core Data in ContentView OK,但是如何使用 AppDelegate 的结果呢?
如何确认 AppDelegate 的 ObservableObject?
防止子视图上的 UITapGestureRecognizer