Установка переменной @State из другого представления в SwiftUI - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь установить значение @State var в var a struct A из var b struct 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 Ответ

1 голос
/ 21 апреля 2020

Вам нужно использовать @Binding для достижения этой цели. Вот пример кода. Я позволил View B появиться внутри View 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")
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...