Sobes.tech
Назад к вопросам
Junior — Middle
73

Можно ли использовать один компонент NavigationLink для управления множеством переходов в приложении с большим числом навигаций?

Ответ от нейросети

sobes.tech 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("Экран настроек")
                }
            }
        }
    }
}