« @State et @Binding » : différence entre les versions
De WikiSwift
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 74 : | Ligne 74 : | ||
</br></br> | |||
Dans tout les autres cas, on n'utilise pas le $, comme dans l'exemple suivant<syntaxhighlight lang="swift" line="1" start="1"> | Dans tout les autres cas, on n'utilise pas le $, comme dans l'exemple suivant<syntaxhighlight lang="swift" line="1" start="1"> |
Version du 24 août 2024 à 17:11
Comment utiliser @State et @Binding ?
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 ?
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
}