Je voudrais initialiser la valeur d'un var @State
Dans SwiftUI à travers la méthode init()
d'un Struct
, afin qu'il puisse prendre le texte approprié d'un dictionnaire préparé pour la manipulation fins dans un TextField. Le code source ressemble à ceci:
struct StateFromOutside: View {
let list = [
"a": "Letter A",
"b": "Letter B",
// ...
]
@State var fullText: String = ""
init(letter: String) {
self.fullText = list[letter]!
}
var body: some View {
TextField($fullText)
}
}
Malheureusement, l'exécution échoue avec l'erreur Thread 1: Fatal error: Accessing State<String> outside View.body
Comment puis-je résoudre la situation? Merci beaucoup d'avance!
La réponse de Bogdan Farca est juste pour ce cas, mais nous ne pouvons pas dire que c'est la solution pour la question posée, car j'ai trouvé qu'il y avait un problème avec le champ de texte dans la question posée. Nous pouvons toujours utiliser l'init pour le même code Alors regardez dans le code ci-dessous, il montre la solution exacte pour la question posée.
struct StateFromOutside: View {
let list = [
"a": "Letter A",
"b": "Letter B",
// ...
]
@State var fullText: String = ""
init(letter: String) {
self.fullText = list[letter]!
}
var body: some View {
VStack {
Text("\(self.fullText)")
TextField("Enter some text", text: $fullText)
}
}
}
Et utilisez-le en appelant simplement à l'intérieur de votre vue
struct ContentView: View {
var body: some View {
StateFromOutside(letter: "a")
}
}