Sobes.tech
Junior — Middle

Kas on võimalik kasutada ühte NavigationLink komponenti, et hallata paljusid üleminekuid rakenduses, kus on palju navigeerimisi?

sobes.tech AI

Vastus AI-lt

SwiftUI-s on komponent NavigationLink mõeldud konkreetse vaate loomiseks üleminekuks. Ühe NavigationLinki kasutamine mitme ülemineku haldamiseks ei ole soovitatav, kuna iga NavigationLink on seotud konkreetse sihtkohaga (destination). Suurema navigeerimise arvuga rakenduste jaoks on parem luua iga ülemineku jaoks eraldi NavigationLink või kasutada programmeeritud navigeerimist NavigationDestination ja NavigationStack abil, kus navigeerimist saab hallata olekuga (näiteks enum erinevate ekraanidega). See tagab puhtama ja hallatavama navigeerimise.

Näide NavigationStacki kasutamisest programmeeritud navigeerimisega:

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("Mine detailidele") {
                    path.append(Screen.details)
                }
                Button("Mine seadistustesse") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Peamine ekraan")
                case .details:
                    Text("Detailide ekraan")
                case .settings:
                    Text("Seadistuste ekraan")
                }
            }
        }
    }
}