« @State et @Binding » : différence entre les versions
De WikiSwift
Page créée avec « ==== '''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"> struct VueA: View { @State private var myString: String = "" var body: some View { Text(myString) } } struct VueB: View { @Binding var myString: String var body: some View {... » |
Aucun résumé des modifications |
||
(8 versions intermédiaires par 2 utilisateurs non affichées) | |||
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 6 : | Ligne 6 : | ||
var body: some View { | var body: some View { | ||
VStack { | |||
VueB(myString: $myString) | |||
VueC(myString: myString) | |||
} | |||
} | } | ||
} | } | ||
Ligne 31 : | 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 64 : | 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 '''$''' | |||
[[Fichier:CleanShot 2024-08-24 at 18.54.54@2x.png|vignette|900x900px|centré]] | |||
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"> | ||
.onTapGesture { | .onTapGesture { | ||
Ligne 73 : | Ligne 77 : | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Catégorie:Bases]] |
Dernière version du 24 août 2024 à 18:53
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
}