Swift Academy · Lektion

View-Identität verstehen

Steuern Sie, wie SwiftUI Views vergleicht und wiederverwendet.

Lektion 1 von 413 Schritte

View-Identität verstehen ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Identität steuert SwiftUI

SwiftUI verfolgt jede Ansicht anhand ihrer Identität, um zu entscheiden, ob eine bestehende Ansicht aktualisiert oder eine neue erstellt werden soll.

Die korrekte Identität ist der wichtigste Hebel für Korrektheit und Performance.

Zwei Arten von Identität

SwiftUI verwendet zwei Formen: strukturelle Identität (die Position einer Ansicht im Ansichtsbaum) und explizite Identität (eine von Ihnen vergebene ID).

Strukturelle Identität

Standardmäßig ergibt sich die Identität einer Ansicht aus ihrer Position in der Hierarchie. Die folgenden if-Zweige erzeugen zwei strukturell unterschiedliche Ansichten.

var body: some View {
    if isOn {
        Text("On")  // one identity
    } else {
        Text("Off") // a different identity
    }
}

Warum Zweige ihren Zustand verlieren

Da jeder Zweig eine andere strukturelle Identität besitzt, wird beim Wechsel zwischen ihnen die erste Ansicht zerstört und die zweite erstellt. Jeder darin enthaltene @State wird zurückgesetzt.

if isExpanded {
    DetailView() // new instance each time the branch flips
} else {
    SummaryView()
}

Explizite Identität mit id()

Der Modifikator .id(_:) weist eine explizite Identität zu. Wenn Sie die ID ändern, teilt dies SwiftUI mit: „Dies ist eine andere Ansicht.“ Dadurch wird eine neue Instanz erstellt und der Zustand zurückgesetzt.

CounterView()
    .id(selectedTab) // new identity per tab

Identität in ForEach

ForEach benötigt für jedes Element eine stabile Identität. Verwenden Sie einen Key Path zu einer stabilen ID, niemals den Array-Index für veränderliche Collections.

ForEach(items, id: \.id) { item in
    RowView(item: item)
}

Die Falle der Index-Identität

Wenn Sie id: \.self für Indizes oder veränderliche Werte verwenden, werden Identitäten bei Änderungen der Daten neu zugeordnet. Das führt zu falschen Animationen und verlorenem Zustand.

// Risky if items reorder or values repeat:
// ForEach(0..<items.count, id: \.self) { ... }

Identität und Animation

Animationen interpolieren zwischen Zuständen derselben Identität. Wenn sich die Identität ändert, führt SwiftUI anstelle einer fließenden Animation einen Einfüge-/Entfernungsübergang aus.

withAnimation {
    // same identity -> property animates
    // changed id     -> transition (fade/slide)
}

Bedingte Modifikatoren ändern die Identität

Wenn Sie einen Modifikator innerhalb eines if anwenden, kann sich die strukturelle Identität ändern und der Zustand zurückgesetzt werden. Bevorzugen Sie eine einzelne Ansicht, deren Modifikatorwert bedingt berechnet wird.

// Better: keep one identity
Text("Hi")
    .opacity(isHidden ? 0 : 1)
// Worse: branching creates two identities

AnyView löscht Identitätsinformationen

Wenn Sie Ansichten in AnyView verpacken, verbergen Sie ihren Typ vor SwiftUI, wodurch die effiziente Differenzbildung eingeschränkt wird. Verwenden Sie nach Möglichkeit stattdessen konkrete Typen oder @ViewBuilder.

// Prefer @ViewBuilder over returning AnyView
@ViewBuilder
func content() -> some View {
    if flag { A() } else { B() }
}

Stabile Identität = stabiler Zustand

Als Faustregel gilt: Halten Sie die Identität stabil, wenn Zustand und fließende Animationen erhalten bleiben sollen. Ändern Sie die Identität bewusst, wenn Sie tatsächlich einen Neuanfang wünschen.

Kurzer Test: Ansichtsidentität

Testen Sie Ihr Verständnis der Ansichtsidentität.

Zusammenfassung: Ansichtsidentität verstehen

SwiftUI identifiziert Ansichten strukturell (Position im Baum) und explizit (.id). Eine stabile Identität bewahrt @State und ermöglicht eine fließende Animation von Eigenschaften. Eine Änderung der Identität setzt den Zustand zurück und löst Übergänge aus.

Geben Sie ForEach stabile IDs, vermeiden Sie bei veränderlichen Daten eine Identität anhand des Indexes, minimieren Sie Verzweigungen, die die Identität wechseln, und vermeiden Sie AnyView, wenn ein konkreter Typ verwendet werden kann.

Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „View-Identität verstehen“ kostenlos?

Ja — der vollständige Text von „View-Identität verstehen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „View-Identität verstehen“?

Steuern Sie, wie SwiftUI Views vergleicht und wiederverwendet. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „View-Identität verstehen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. View-Identität verstehen
  2. Neuberechnung von Body minimieren
  3. Equatable Views und @State-Sichtbarkeit
  4. Profiling mit dem SwiftUI-Instrument
← Zurück zu Swift Academy