SwiftUI || Was ist der @State-Eigenschaftswrapper?
In SwiftUI @Statewird es häufig in einer Struktur verwendet, um eine Eigenschaft zu deklarieren, deren Wert sich im Laufe der Zeit ändern kann und die das erneute Rendern der Ansicht auslösen kann, wenn der Wert aktualisiert wird.
Wann sollten wir @state verwenden?
Wir sollten den Eigenschaften-Wrapper in SwiftUI immer dann verwenden @State, wenn wir eine Eigenschaft haben, die veränderbar sein muss und deren Änderungen dazu führen sollen, dass die Ansicht automatisch aktualisiert wird.
Mit anderen Worten: Sie sollten @Statefür Eigenschaften verwenden, die Teil des internen Status der Ansicht sind und
kann sich im Laufe der Zeit aufgrund von Benutzerinteraktionen oder anderen Ereignissen ändern. Beispiele für Eigenschaften, die verwendet werden könnten, @Statesind:
- Die ausgewählte Registerkarte in einer Registerkartenansicht
- Der aktuelle Fortschritt einer Ladeanzeige
- Der Text in einem Textfeld
- Der Zustand eines Umschalters oder Schalters
- Die aktuelle Seite in einer Seitenansicht
Es ist wichtig zu beachten, dass dies @Statenur für Eigenschaften verwendet werden sollte, die Teil des internen Status der Ansicht sind. Wenn Sie den Status verwalten müssen, der von mehreren Ansichten oder Komponenten gemeinsam genutzt wird, sollten Sie andere Eigenschaften-Wrapper wie @Binding, @ObservedObjectoder verwenden @EnvironmentObject.
Nehmen wir ein Beispiel
Wenn Sie eine Eigenschaft mit dem @StateEigenschaften-Wrapper in einer Struktur deklarieren, wird der Wert dieser Eigenschaft an einem separaten Speicherort außerhalb der Struktur gespeichert und die Struktur erhält einen Verweis auf diesen Wert. Dadurch kann die Ansicht automatisch neu gerendert werden, wenn sich der Wert der @StateEigenschaft ändert, ohne dass die Ansicht erneut initialisiert werden muss.
Hier ist ein Beispiel dafür, wie es @Statein einer Struktur in SwiftUI verwendet werden kann:
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("Increment Count") {
count += 1
}
}
}
}
@StateDa wir den Eigenschaften-Wrapper zum Deklarieren der Variablen verwendet haben count, lösen alle Änderungen an der countVariablen das erneute Rendern der Ansicht aus, wodurch der angezeigte Wert der TextAnsicht aktualisiert wird.
Dies ist ein einfaches Beispiel dafür, wie @StateEigenschaften in SwiftUI verwendet werden können. @StateEigenschaften sind sehr nützlich für die Statusverwaltung in SwiftUI-Anwendungen, da sie es uns ermöglichen, dynamische Ansichten zu erstellen, die auf Änderungen in den Daten reagieren können.
Ein weiteres Beispiel für ein Problem im wirklichen Leben
struct ContentView: View {
@State private var username: String = ""
@State private var password: String = ""
@State private var rememberMe: Bool = false
@State private var loginError: Bool = false
var body: some View {
VStack {
TextField("Username", text: $username)
.padding()
SecureField("Password", text: $password)
.padding()
Toggle("Remember Me", isOn: $rememberMe)
.padding()
Button("Log In") {
// Perform login logic here...
if username == "user" && password == "password" {
// Successful login
loginError = false
} else {
// Failed login
loginError = true
}
}
.alert(isPresented: $loginError) {
Alert(title: Text("Error"), message: Text("Invalid username or password"), dismissButton: .default(Text("OK")))
}
}
.padding()
}
}
Viel Spaß beim Codieren !

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































