Sobes.tech
Junior — Middle

Vai ir iespējams izmantot vienu NavigationLink komponentu, lai pārvaldītu daudz pāreju lietojumprogrammā ar daudzām navigācijām?

sobes.tech AI

Atbilde no AI

SwiftUI komponenta NavigationLink ir paredzēta, lai izveidotu pāreju uz konkrētu skatījumu. Nav ieteicams izmantot vienu NavigationLink, lai pārvaldītu vairākas pārejas, jo katrs NavigationLink ir saistīts ar konkrētu galamērķi (destination). Lielam navigāciju skaitam labāk ir izveidot atsevišķu NavigationLink katram pārejai vai izmantot programmētu navigāciju ar NavigationDestination un NavigationStack, kur var pārvaldīt navigāciju caur stāvokli (piemēram, enum ar dažādiem ekrāniem). Tas nodrošina tīrāku un pārvaldāmāku navigāciju.

Piemērs ar NavigationStack un programmētu navigāciju:

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āriet uz detaļām") {
                    path.append(Screen.details)
                }
                Button("Pāriet uz iestatījumiem") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Galvenais ekrāns")
                case .details:
                    Text("Detaļu ekrāns")
                case .settings:
                    Text("Iestatījumu ekrāns")
                }
            }
        }
    }
}