0

有没有办法在 SwiftUI 中拥有一个全局状态变量?能够让我所有的视图都订阅相同的状态会很好。有什么理由不这样做吗?

当我尝试使用@State装饰器声明一个全局变量时,swift 编译器崩溃了(测试版软件,对吗?)。

4

2 回答 2

1

@State 仅用于管理局部变量。您正在寻找的包装是@EnvironmentObject. 您可以将其用于主题颜色、方向、订阅或非订阅用户等。

于 2019-06-16T07:21:18.653 回答
0
var globalBool: Bool = false {
    didSet {

        // This will get called
        NSLog("Did Set" + globalBool.description)

    }

}


struct GlobalUser : View {
    @Binding var bool: Bool


    var body: some View {

        VStack {

            Text("State: \(self.bool.description)") // This will never update
            Button("Toggle") { self.bool.toggle() }
        }

    }

}

...
static var previews: some View {
    GlobalUser(bool: Binding<Bool>(getValue: { globalBool }, setValue: { 

    globalBool = $0 }))

}
于 2019-12-17T11:31:19.090 回答