Именно поэтому у вас уже есть оболочка свойства @State в вашем представлении.
struct Test: View{
@State var s = "test"
var body: some View {
Text("\(s)")
.onTapGesture {
self.s = "anyting" // compiler error
}
}
}
Вы можете изменить s непосредственно из своего кода, поскольку s обернут в @ State.
это функциональный эквивалент вышеупомянутого
struct Test: View{
let s = State<String>(initialValue: "alfa")
var body: some View {
VStack {
Text("\(s.wrappedValue)")
.onTapGesture {
self.s.wrappedValue = "beta"
}
}
}
}
или, если необходимо связывание
struct Test: View{
let s = State<String>(initialValue: "alfa")
var body: some View {
VStack {
TextField("label", text: s.projectedValue)
}
}
}