Comprender la identidad de las vistas
Controle cómo SwiftUI compara y reutiliza las vistas.
Comprender la identidad de las vistas es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
La identidad dirige SwiftUI
SwiftUI realiza el seguimiento de cada vista mediante su identidad para decidir si debe actualizar una vista existente o crear una nueva.
Definir correctamente la identidad es el factor individual más importante para la corrección y el rendimiento.
Dos tipos de identidad
SwiftUI utiliza dos formas: la identidad estructural (la posición de una vista en el árbol de vistas) y la identidad explícita (un id que usted asigna).
Identidad estructural
De forma predeterminada, la identidad de una vista proviene del lugar que ocupa en la jerarquía. Las ramas de if siguientes crean dos vistas estructuralmente distintas.
var body: some View {
if isOn {
Text("On") // one identity
} else {
Text("Off") // a different identity
}
}Por qué las ramas pierden el estado
Como cada rama tiene una identidad estructural diferente, al cambiar entre ellas se destruye la primera vista y se crea la segunda. Cualquier @State que contenga se restablece.
if isExpanded {
DetailView() // new instance each time the branch flips
} else {
SummaryView()
}Identidad explícita con id()
El modificador .id(_:) asigna una identidad explícita. Cambiar el id indica a SwiftUI «esta es una vista diferente», lo que fuerza una instancia nueva y restablece el estado.
CounterView()
.id(selectedTab) // new identity per tabIdentidad en ForEach
ForEach necesita una identidad estable para cada elemento. Use una key path hacia un id estable; no use nunca el índice de un array para colecciones mutables.
ForEach(items, id: \.id) { item in
RowView(item: item)
}La trampa de la identidad basada en índices
Usar id: \.self con índices o valores que cambian reordena las identidades cuando mutan los datos, lo que provoca animaciones incorrectas y pérdida de estado.
// Risky if items reorder or values repeat:
// ForEach(0..<items.count, id: \.self) { ... }Identidad y animación
Las animaciones interpolan entre estados de la misma identidad. Si la identidad cambia, SwiftUI realiza una transición de inserción o eliminación en lugar de una animación fluida.
withAnimation {
// same identity -> property animates
// changed id -> transition (fade/slide)
}Los modificadores condicionales cambian la identidad
Aplicar un modificador dentro de un if puede cambiar la identidad estructural y restablecer el estado. Prefiera una sola vista cuyo valor del modificador se calcule de forma condicional.
// Better: keep one identity
Text("Hi")
.opacity(isHidden ? 0 : 1)
// Worse: branching creates two identitiesAnyView elimina la información de identidad
Envolver vistas en AnyView oculta su tipo a SwiftUI y reduce su capacidad para diferenciarlas de forma eficiente. Cuando sea posible, use tipos concretos o @ViewBuilder.
// Prefer @ViewBuilder over returning AnyView
@ViewBuilder
func content() -> some View {
if flag { A() } else { B() }
}Identidad estable = estado estable
Como regla general, mantenga estable la identidad cuando quiera conservar el estado y las animaciones fluidas; cambie la identidad deliberadamente cuando realmente quiera empezar de cero.
Comprobación rápida: identidad de las vistas
Compruebe su comprensión de la identidad de las vistas.
Resumen: comprender la identidad de las vistas
SwiftUI identifica las vistas de forma estructural (por su posición en el árbol) y explícita (mediante .id). Una identidad estable conserva @State y permite animar las propiedades con fluidez; cambiar la identidad restablece el estado y activa transiciones.
Asigne ids estables a ForEach, evite la identidad basada en índices para datos mutables, reduzca al mínimo las ramas que alternan la identidad y evite AnyView cuando sea posible usar un tipo concreto.
Preguntas frecuentes
¿La lección «Comprender la identidad de las vistas» es gratis?
Sí — el texto completo de «Comprender la identidad de las vistas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Comprender la identidad de las vistas»?
Controle cómo SwiftUI compara y reutiliza las vistas. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Comprender la identidad de las vistas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Comprender la identidad de las vistas
- Minimizar la reevaluación de body
- Vistas Equatable y ámbito de @State
- Perfilado con el instrumento de SwiftUI