navigationDestination
SwiftUI navigatsiya: navigationDestination
NavigationStack path’iga push qilingan qiymatlar uchun .navigationDestination(for:) yordamida tiplashtirilgan manzillarni belgilang.
Tiplashtirilgan manzillar
Tiplashtirilgan manzillar NavigationStack path’iga push qilingan qiymatlar uchun .navigationDestination(for:) yordamida manzillarni belgilash imkonini beradi.
Misol
import SwiftUI
struct NumberDetail: View { let n: Int; var body: some View { Text("Number: \(n)") } }
struct TextDetail: View { let s: String; var body: some View { Text("Text: \(s)") } }
struct DestinationTypedDemo: View {
@State private var intPath: [Int] = []
@State private var stringPath: [String] = []
var body: some View {
NavigationStack(path: $intPath) {
VStack(spacing: 12) {
Button("Push Int 7") { intPath.append(7) }
NavigationLink("Push Text 'Hi'", value: "Hi")
}
.navigationDestination(for: Int.self) { n in NumberDetail(n: n) }
.navigationDestination(for: String.self) { s in TextDetail(s: s) }
.navigationTitle("Typed Destinations")
}
}
}
import SwiftUI
struct ContentView: View {
var body: some View { DestinationTypedDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene { WindowGroup { ContentView() } }
}
Yuqoridagi misolda NumberDetail va TextDetail view’lari NavigationStack path’iga .navigationDestination(for:) yordamida push qilingan qiymatlar uchun manzil sifatida ishlatilgan.
Enum asosidagi marshrutlash
Enum asosidagi marshrutlash NavigationStack path’iga push qilingan qiymatlar uchun .navigationDestination(for:) yordamida manzillarni belgilash imkonini beradi.
Misol
import SwiftUI
enum Route: Hashable { case number(Int), text(String) }
struct DestinationMultiDemo: View {
@State private var path: [Route] = []
var body: some View {
NavigationStack(path: $path) {
VStack(spacing: 12) {
Button("Go to number 5") { path.append(.number(5)) }
Button("Go to text 'Hello'") { path.append(.text("Hello")) }
}
.navigationDestination(for: Route.self) { r in
switch r {
case .number(let n): Text("Number: \(n)")
case .text(let s): Text("Text: \(s)")
}
}
.navigationTitle("Enum Destinations")
}
}
}
import SwiftUI
struct ContentView: View {
var body: some View { DestinationMultiDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene { WindowGroup { ContentView() } }
}
Yuqoridagi misolda Route enum’i NavigationStack path’iga .navigationDestination(for:) yordamida push qilingan qiymatlar uchun manzillarni belgilashda ishlatilgan.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
