Ios 从SceneDelegate更新屏幕结构的状态

Ios 从SceneDelegate更新屏幕结构的状态,ios,swift,iphone,swiftui,Ios,Swift,Iphone,Swiftui,我来自react native,是Swift和SwiftUI的初学者,我很好奇当应用程序返回前台时,如何在特定屏幕上执行操作和更新状态。我想检查通知的状态(“允许”、“拒绝”等)并更新UI 这是一些示例代码-以下是我要更新的视图: struct Test: View { @State var isNotificationsEnabled : Bool var body : some View { Toggle(isOn: self.isNotifications

我来自react native,是Swift和SwiftUI的初学者,我很好奇当应用程序返回前台时,如何在特定屏幕上执行操作和更新状态。我想检查通知的状态(“允许”、“拒绝”等)并更新UI

这是一些示例代码-以下是我要更新的视图:

struct Test: View {
    @State var isNotificationsEnabled : Bool

    var body : some View {
        Toggle(isOn: self.isNotificationsEnabled) {
            Text("Notifications")
        }
    }

}
到目前为止,我一直在读的是,您需要在
SceneDelegate.swift
中编辑
func scenewillenterprogent(u-scene:UIScene)
,但我究竟如何从那里更新我的
Test
结构的状态?我想我们需要某种全局状态,但这只是一个猜测


有什么建议吗?

这里是最简单的方法

struct Test: View {
    @State private var isNotificationsEnabled : Bool

    private let foregroundPublisher = NotificationCenter.default.publisher(for: UIScene.willEnterForegroundNotification)

    var body : some View {
        Toggle(isOn: self.$isNotificationsEnabled) {
            Text("Notifications")
        }
        .onReceive(foregroundPublisher) { notification in
            // do anything needed here
        }
    }
}
当然,如果您的应用程序可以有多个场景,并且您需要以某种方式区分它们,那么需要使用此方法的更复杂变体来区分生成此通知的场景