Sobes.tech
Junior — Middle

Használható-e egyetlen NavigationLink komponens több átmenet kezelésére egy olyan alkalmazásban, ahol sok navigáció van?

sobes.tech MI

Válasz az MI-től

SwiftUI-ban a NavigationLink komponens arra szolgál, hogy egy adott nézetre való átmenetet hozzon létre. Nem ajánlott egyetlen NavigationLink-et használni több átmenet kezelésére, mivel minden NavigationLink egy adott céllal (destination) van összekapcsolva. Nagy számú navigációval rendelkező alkalmazások esetén jobb, ha minden átmenethez külön NavigationLink-et hozunk létre, vagy programozott navigációt alkalmazunk NavigationDestination és NavigationStack segítségével, ahol az állapot (például egy enum különböző képernyőkkel) szerint kezelhetjük a navigációt. Ez tisztább és kezelhetőbb navigációt biztosít.

Példa a NavigationStack programozott navigációval való használatára:

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("Ugrás a részletekre") {
                    path.append(Screen.details)
                }
                Button("Ugrás a beállításokra") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Főképernyő")
                case .details:
                    Text("Részletek képernyő")
                case .settings:
                    Text("Beállítások képernyő")
                }
            }
        }
    }
}