Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

В SwiftUI компонентът NavigationLink е предназначен за създаване на преход към конкретно представяне. Не се препоръчва използването на един NavigationLink за управление на множество преходи, тъй като всеки NavigationLink е свързан с конкретна цел (destination). За приложения с голям брой навигации е по-добре да създавате отделен NavigationLink за всеки преход или да използвате програмирана навигация с NavigationDestination и NavigationStack, където можете да управлявате навигацията чрез състояние (например, enum с различни екрани). Това осигурява по-чиста и управляеми навигация.

Пример за използване на NavigationStack с програмирана навигация:

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("Отидете на детайли") {
                    path.append(Screen.details)
                }
                Button("Отидете на настройки") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Главен екран")
                case .details:
                    Text("Екран с детайли")
                case .settings:
                    Text("Екран с настройки")
                }
            }
        }
    }
}