« @State et @Binding » : différence entre les versions
De WikiSwift
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
=== '''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)<syntaxhighlight lang="swift" line="1" start="1"> | Premièrement on utilise seulement '''@State''' et '''@Binding''' lorsque l'on veut qu'il y est une modification de l'interface utilisateur (UI)<syntaxhighlight lang="swift" line="1" start="1"> | ||
struct VueA: View { | struct VueA: View { | ||
Ligne 34 : | Ligne 34 : | ||
Ma VueC ne peut pas modifier ma variable alors pas besoin de @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 ?''' === | |||
<syntaxhighlight lang="swift" line="1" start="1"> | <syntaxhighlight lang="swift" line="1" start="1"> | ||
struct VueA: View { | struct VueA: View { | ||
Ligne 67 : | Ligne 67 : | ||
} | } | ||
} | } | ||
</syntaxhighlight>On met un | </syntaxhighlight>On met un dollars ''<u>'''SEULEMENT'''</u>'' 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 $ | Un TextField attend également un Binding donc on utilise le '''$''' | ||
[[Fichier:CleanShot 2024-08-24 at 18.54.54@2x.png|gauche|vignette|900x900px]] | [[Fichier:CleanShot 2024-08-24 at 18.54.54@2x.png|gauche|vignette|900x900px]] | ||
Version du 24 août 2024 à 17:10
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
}