Sobes.tech
Junior — Middle

Czy można użyć jednego komponentu NavigationLink do obsługi wielu przejść w aplikacji z dużą liczbą nawigacji?

sobes.tech AI

Odpowiedź od AI

W SwiftUI komponent NavigationLink służy do tworzenia przejścia do konkretnego widoku. Nie zaleca się używania jednego NavigationLink do obsługi wielu przejść, ponieważ każdy NavigationLink jest powiązany z określonym celem (destination). Dla aplikacji z dużą liczbą nawigacji lepiej jest tworzyć osobny NavigationLink dla każdego przejścia lub korzystać z programowej nawigacji za pomocą NavigationDestination i NavigationStack, gdzie można zarządzać nawigacją przez stan (np. enum z różnymi ekranami). Zapewnia to bardziej czystą i zarządzalną nawigację.

Przykład użycia NavigationStack z nawigacją programową:

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("Przejdź do szczegółów") {
                    path.append(Screen.details)
                }
                Button("Przejdź do ustawień") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Ekran główny")
                case .details:
                    Text("Ekran szczegółów")
                case .settings:
                    Text("Ekran ustawień")
                }
            }
        }
    }
}