@State et @Binding
De WikiSwift
Comment utiliser @State et @Binding ?[modifier | modifier le wikicode]
Premièrement on utilise seulement @State et @Binding lorsque l'on veut qu'il y est une modification de l'interface utilisateur (UI)
struct VueA: View {
@State private var myString: String = ""
var body: some View {
VStack {
VueB(myString: $myString)
VueC(myString: myString)
}
}
}
struct VueB: View {
@Binding var myString: String
var body: some View {
TextField("Placeholder", text: $myString)
}
}
struct VueC: View {
var myString: String
var body: some View {
Text(myString)
}
}
Ma VueB peut modifier ma variable alors j'utilise un @Binding.
Ma VueC ne peut pas modifier ma variable alors pas besoin de @Binding
Pourquoi on utilise des $ et des fois non pour modifier une variable ?[modifier | modifier le wikicode]
struct VueA: View {
@State private var myString: String = ""
var body: some View {
VueD(myString: $myString)
}
}
struct VueD: View {
@Binding var myString: String
let hello: String = "Hello"
let bonjour: String = "Bonjour"
var body: some View {
VStack {
TextField("Placeholder", text: $myString)
Text("Hello")
.onTapGesture {
myString = hello
}
Text("Bonjour")
.onTapGesture {
myString = bonjour
}
}
}
}
On met un dollars SEULEMENT lorsque le type attendu est un @Binding, ma VueD attend un @Binding alors lorsque je l'utilise je mets un $ -> VueD(myString: $myString)
Un TextField attend également un Binding donc on utilise le $

Dans tout les autres cas, on n'utilise pas le $, comme dans l'exemple suivant
.onTapGesture {
myString = hello
}