Sobes.tech
Junior — Middle

Може ли се користити један компонент NavigationLink за управљање многим прелазима у апликацији са великим бројем навигација?

sobes.tech АИ

Одговор од АИ

U SwiftUI, komponenta NavigationLink namenjena je za kreiranje prelaza ka određenom prikazu. Nije preporučljivo koristiti jedan NavigationLink za upravljanje više prelaza, jer je svaki NavigationLink povezan sa specifičnim odredištem (ciljem prelaza). Za aplikacije sa velikim brojem navigacija, bolje je napraviti poseban NavigationLink za svaki prelaz ili koristiti programsku navigaciju pomoću NavigationDestination i NavigationStack, gde možete upravljati navigacijom putem stanja (npr. enum sa različitim ekranima). Ovo obezbeđuje čistiju i lakše upravljivu navigaciju.

Primer korišćenja NavigationStack sa programskom navigacijom:

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("Idi na detalje") {
                    path.append(Screen.details)
                }
                Button("Idi na podešavanja") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Glavni ekran")
                case .details:
                    Text("Ekran detalja")
                case .settings:
                    Text("Ekran podešavanja")
                }
            }
        }
    }
}