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")
}
}
}
}
}