Sobes.tech
Junior — Middle

Je možné použiť jeden komponent NavigationLink na riadenie viacerých prechodov v aplikácii s veľkým počtom navigácií?

sobes.tech AI

Odpoveď od AI

V SwiftUI je komponent NavigationLink namenjena za ustvarjanje prehoda do določene predstavitve. Ni priporočljivo uporabljati enega NavigationLink za upravljanje več prehodov, saj je vsak NavigationLink povezan z določenim ciljem (destination). Za aplikacije z veliko število navigacij je bolje ustvariti ločen NavigationLink za vsak prehod ali uporabiti programsko navigacijo z NavigationDestination in NavigationStack, kjer lahko upravljate navigacijo preko stanja (npr. enum z različnimi zasloni). To zagotavlja bolj čisto in upravljivo navigacijo.

Primer uporabe NavigationStack z programskim prehodom:

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("Pojdi na podrobnosti") {
                    path.append(Screen.details)
                }
                Button("Pojdi na nastavitve") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Glavni zaslon")
                case .details:
                    Text("Zaslon podrobnosti")
                case .settings:
                    Text("Zaslon nastavitev")
                }
            }
        }
    }
}