在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
的var
b
中设置结构
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")
    }
  }
}
... 并通过关键字进行搜索。