在SwiftUI的另一个视图中设置@State var

时间:2020-04-21 03:10:07

标签: swiftui state

我正在尝试从结构@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未设置为"???"。为什么?

1 个答案:

答案 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")
    }
  }
}