Desarrollador iOS: pregunta de entrevista
¿Cómo estructuras navegación en una app SwiftUI?
La navegación SwiftUI debe derivar de estado de ruta explícito, identificadores estables y destinos tipados, preservar deep links y restauración y separar routing de vistas reutilizables.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
El estado de navegación son datos: un NavigationPath o un array de valores de ruta tipados propiedad de un router o del view model raíz, renderizado por NavigationStack con navigationDestination para cada tipo de ruta. Las pantallas piden al router que empuje o presente en lugar de construir la vista siguiente, lo que las mantiene reutilizables y comprobables. Los deep links se parsean a los mismos valores de ruta y reemplazan la pila, las hojas y cubiertas a pantalla completa se gobiernan por estado opcional, y la pila es Codable para persistirla en la restauración de estado.
Ejemplo
Una app de compras define enum Route: Hashable { case product(id), cart, checkout } y guarda [Route] en un AppRouter @Observable; tocar un producto añade .product(id), y un enlace universal a un producto fija la pila en [.product(id)] para que el botón atrás vuelva a la raíz. El flujo de checkout es un NavigationStack propio dentro de una hoja para poder cerrarlo como unidad.
Errores frecuentes
- Construir cadenas de NavigationLink(destination:) que crean vistas de forma ansiosa y acoplan pantallas entre sí.
- Manejar deep links empujando vistas a mano y acabar con una pila inconsistente.
- Mantener booleanos de presentación en muchas vistas, de modo que dos hojas pueden pedirse a la vez.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.