在SwiftUI中从另一个视图设置@State变量
我正试图从结构在SwiftUI中从另一个视图设置@State变量,swiftui,state,Swiftui,State,我正试图从结构b的varb中设置结构a的var@State变量的值,但它不起作用。我需要使用@Statevar,因为我将它作为绑定传递。例: struct A : View { @State var myBindableVar = "" var body : some View { TextField(self.$myBindableVar) ... } } struct B : View { @State var a : A var body : some Vi
b
的varb
中设置结构a
的var@State
变量的值,但它不起作用。我需要使用@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
未设置为“?”
。为什么?您需要使用@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")
}
}
}
... 并通过关键字进行搜索。