有没有办法在 SwiftUI 中拥有一个全局状态变量?能够让我所有的视图都订阅相同的状态会很好。有什么理由不这样做吗?
当我尝试使用@State
装饰器声明一个全局变量时,swift 编译器崩溃了(测试版软件,对吗?)。
有没有办法在 SwiftUI 中拥有一个全局状态变量?能够让我所有的视图都订阅相同的状态会很好。有什么理由不这样做吗?
当我尝试使用@State
装饰器声明一个全局变量时,swift 编译器崩溃了(测试版软件,对吗?)。
@State 仅用于管理局部变量。您正在寻找的包装是@EnvironmentObject
. 您可以将其用于主题颜色、方向、订阅或非订阅用户等。
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 }))
}