在SwiftUI中,是否可以创建一个全局@State变量以跨多个Swift UI文件访问?
我研究了@EnvironmentObject变量,但似乎无法做到我想要的。
我研究了@EnvironmentObject变量,但似乎无法做到我想要的。
@State
变量。编译器会发生故障。您可以将其放在结构体中,并创建结构体的实例以进行构建。但是,如果您实际上实例化了它,您将会得到一个运行时错误,例如:Accessing State<Bool> outside View.body
。BindableObject
属性绑定的绑定。这个示例很好。Binding
到全局变量,但不幸的是,这仍然无法满足您的需求。值将更新,但您的视图不会刷新(下面是代码示例)。Binding
的示例: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 }))
}
...