Swift Academy · Leçon

Comprendre l’identité des vues

Contrôlez la manière dont SwiftUI compare et réutilise les vues.

Leçon 1 sur 413 étapes

Comprendre l’identité des vues est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

L’identité guide SwiftUI

SwiftUI suit chaque vue grâce à son identité afin de déterminer s’il doit mettre à jour une vue existante ou en créer une nouvelle.

Une identité correcte est le levier le plus important pour garantir la justesse et les performances.

Deux types d’identité

SwiftUI utilise deux formes d’identité : l’identité structurelle (la position d’une vue dans l’arbre des vues) et l’identité explicite (un identifiant que vous attribuez).

Identité structurelle

Par défaut, l’identité d’une vue provient de sa position dans la hiérarchie. Les branches if ci-dessous créent deux vues structurellement distinctes.

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

Pourquoi les branches perdent leur état

Comme chaque branche possède une identité structurelle différente, passer de l’une à l’autre détruit la première vue et crée la seconde. Tout @State qu’elle contient est réinitialisé.

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

Identité explicite avec id()

Le modificateur .id(_:) attribue une identité explicite. Modifier l’identifiant indique à SwiftUI « il s’agit d’une autre vue », ce qui force la création d’une nouvelle instance et la réinitialisation de l’état.

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

Identité dans ForEach

ForEach nécessite une identité stable pour chaque élément. Utilisez un chemin de clé vers un identifiant stable, jamais l’index du tableau pour des collections modifiables.

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

Le piège de l’identité par index

Utiliser id: \.self sur des index ou des valeurs qui changent réordonne les identités lorsque les données sont modifiées, ce qui provoque des animations incorrectes et une perte d’état.

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

Identité et animation

Les animations interpolent entre les états d’une identité identique. Si l’identité change, SwiftUI effectue une transition d’insertion et de suppression au lieu d’une animation fluide.

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

Les modificateurs conditionnels changent l’identité

Appliquer un modificateur à l’intérieur d’un if peut changer l’identité structurelle et réinitialiser l’état. Préférez une vue unique dont la valeur du modificateur est calculée conditionnellement.

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

AnyView efface les informations d’identité

En enveloppant les vues dans AnyView, vous masquez leur type à SwiftUI, ce qui réduit sa capacité à comparer efficacement les vues. Utilisez plutôt des types concrets ou @ViewBuilder lorsque c’est possible.

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

Identité stable = état stable

La règle générale est la suivante : conservez une identité stable lorsque vous souhaitez préserver l’état et la fluidité des animations ; ne changez l’identité intentionnellement que lorsque vous voulez réellement repartir de zéro.

Vérification rapide&nbsp;: identité des vues

Vérifiez votre compréhension de l’identité des vues.

Récapitulatif&nbsp;: comprendre l’identité des vues

SwiftUI identifie les vues structurellement (par leur position dans l’arbre) et explicitement (avec .id). Une identité stable préserve @State et permet une animation fluide des propriétés ; changer l’identité réinitialise l’état et déclenche des transitions.

Attribuez des identifiants stables à ForEach, évitez l’identité fondée sur l’index pour les données modifiables, limitez les branchements qui font basculer l’identité et évitez AnyView lorsqu’un type concret convient.

Gratuit pour commencer

Apprends Swift avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
122
Leçons
409

Questions Fréquemment Posées

La leçon « Comprendre l’identité des vues » est-elle gratuite ?

Oui — le texte complet de « Comprendre l’identité des vues » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Comprendre l’identité des vues » ?

Contrôlez la manière dont SwiftUI compare et réutilise les vues. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Comprendre l’identité des vues » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Comprendre l’identité des vues
  2. Minimiser la réévaluation de Body
  3. Vues Equatable et portée de @State
  4. Profiler avec l’instrument SwiftUI
← Retour à Swift Academy