我正在尝试从结构@State
的变量a
的结构A
的变量b
的{{1}}变量中设置B
变量的值,但是不起作用。我需要使用@State
var,因为我将其作为绑定传递。例如:
struct A : View {
@State var myBindableVar = ""
var body : some View {
TextField(self.$myBindableVar) ...
}
}
struct B : View {
@State var a : A
var body : some View {
Button(action: { self.a.myBindableVar = "???" }) { ... }
}
}
轻按按钮时, myBindableVar
未设置为"???"
。为什么?
答案 0 :(得分:1)
您需要使用@Binding实现此目的。这是一些示例代码。我让视图B出现在视图A内,以便您可以直接在屏幕上看到工作结果:
struct A : View {
@State var myBindableVar = ""
var body : some View {
VStack {
Text(myBindableVar)
Spacer()
B(myBindableVar: $myBindableVar)
}
}
}
struct B : View {
@Binding var myBindableVar : String
var body : some View {
Button(action: { self.myBindableVar = "Text appears" }) {
Text("Press to change")
}
}
}