Sobes.tech
Junior — Middle

È possibile utilizzare un singolo componente NavigationLink per gestire molteplici transizioni in un'applicazione con numerose navigazioni?

sobes.tech AI

Risposta dell'AI

In SwiftUI, il componente NavigationLink è destinato a creare un passaggio a una visualizzazione specifica. Non è consigliabile usare un singolo NavigationLink per gestire molteplici transizioni, poiché ogni NavigationLink è associato a una destinazione specifica. Per applicazioni con molte navigazioni, è meglio creare un NavigationLink separato per ogni transizione o usare la navigazione programmata con NavigationDestination e NavigationStack, dove si può gestire la navigazione tramite lo stato (ad esempio, un enum con diversi schermi). Questo garantisce una navigazione più pulita e gestibile.

Esempio di utilizzo di NavigationStack con navigazione programmata:

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("Vai ai dettagli") {
                    path.append(Screen.details)
                }
                Button("Vai alle impostazioni") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Schermata principale")
                case .details:
                    Text("Schermata dettagli")
                case .settings:
                    Text("Schermata impostazioni")
                }
            }
        }
    }
}