Sobes.tech
Junior — Middle

¿Se puede usar un solo componente NavigationLink para gestionar múltiples transiciones en una aplicación con muchas navegaciones?

sobes.tech AI

Respuesta de la IA

En SwiftUI, el componente NavigationLink está diseñado para crear una transición a una vista específica. No se recomienda usar un solo NavigationLink para gestionar múltiples transiciones, ya que cada NavigationLink está asociado con un destino (objetivo de la transición) específico. Para aplicaciones con muchas transiciones, es mejor crear un NavigationLink separado para cada transición o usar navegación programática con NavigationDestination y NavigationStack, donde se puede gestionar la navegación mediante el estado (por ejemplo, un enum con diferentes pantallas). Esto proporciona una navegación más limpia y manejable.

Ejemplo de uso de NavigationStack con navegación programática:

enum Screen {
    case home
    case details
    case settings
}

struct ContentView: View {
    @State private var path = NavigationPath()

    var body: some View {
        NavigationStack(path: $path) {
            VStack {
                Button("Ir a detalles") {
                    path.append(Screen.details)
                }
                Button("Ir a configuración") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Pantalla principal")
                case .details:
                    Text("Pantalla de detalles")
                case .settings:
                    Text("Pantalla de configuración")
                }
            }
        }
    }
}