Sobes.tech
Junior — Middle

Ko'p navigatsiyaga ega ilovada ko'p o'tishlarni boshqarish uchun bitta NavigationLink komponentidan foydalanish mumkinmi?

sobes.tech AI

AIdan javob

SwiftUIда NavigationLink компоненти муайян бир кўрсатишга ўтиш учун мўлжалланган. Бир нечта ўтишларни бошқариш учун бир NavigationLinkдан фойдаланиш тавсия этилмайди, чунки ҳар бир NavigationLink аниқ бир мақсадга (ўтиш мақсади) боғланган. Кўп навигацияга эга илова учун ҳар бир ўтиш учун алоҳида NavigationLink яратиш ёки NavigationDestination ва NavigationStack yordamida дастурий навигациядан фойдаланиш яхшироқ, бу ҳолда навигация ҳолат (масалан, турли экранлар билан 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("Настройкалар экрани")
                }
            }
        }
    }
}