Sobes.tech
Junior — Middle

Ar galima naudoti vieną NavigationLink komponentą, kad valdytumėte daugybę perėjimų programoje su daug navigacijų?

sobes.tech AI

Atsakymas iš AI

SwiftUI komponentas NavigationLink skirtas sukurti pereinamąjį ryšį su konkrečia vaizduote. Nerekomenduojama naudoti vieno NavigationLink keliems pereiti, nes kiekvienas NavigationLink yra susijęs su konkrečia paskirties vieta (destination). Daugiau navigacijų turinčioms programėlėms geriau kurti atskirą NavigationLink kiekvienam pereiti arba naudoti programinę navigaciją su NavigationDestination ir NavigationStack, kur galima valdyti navigaciją per būseną (pvz., enum su skirtingais ekranais). Tai užtikrina švaresnę ir valdomesnę navigaciją.

Pavyzdys naudojant NavigationStack su programine navigacija:

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("Eiti į detales") {
                    path.append(Screen.details)
                }
                Button("Eiti į nustatymus") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Pagrindinis ekranas")
                case .details:
                    Text("Detalių ekranas")
                case .settings:
                    Text("Nustatymų ekranas")
                }
            }
        }
    }
}