Sobes.tech
Junior — Middle

Lze použít jeden komponent NavigationLink k řízení mnoha přechodů v aplikaci s velkým počtem navigací?

sobes.tech AI

Odpověď od AI

V SwiftUI je komponent NavigationLink určen k vytvoření přechodu na konkrétní zobrazení. Nedoporučuje se používat jeden NavigationLink pro správu více přechodů, protože každý NavigationLink je spojen s konkrétním cílem (destinací). Pro aplikace s velkým počtem navigací je lepší vytvořit samostatný NavigationLink pro každý přechod nebo použít programovou navigaci pomocí NavigationDestination a NavigationStack, kde lze navigaci řídit přes stav (například enum s různými obrazovkami). To zajišťuje čistší a lépe spravovatelnou navigaci.

Příklad použití NavigationStack s programovou navigací:

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("Přejít na detaily") {
                    path.append(Screen.details)
                }
                Button("Přejít na nastavení") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Hlavní obrazovka")
                case .details:
                    Text("Detaily")
                case .settings:
                    Text("Nastavení")
                }
            }
        }
    }
}