ناوبری SwiftUI (SwiftUI Navigation)
ناوبری SwiftUI یعنی رفتن بین صفحه ها. با «NavigationStack» و «NavigationLink» جابه جا می شویم. همچنین با «Sheet» و «Alert» پنجره های پاپ آپ نشان می دهیم. این ها مثل منوهای بازی هستند.
NavigationStack و NavigationLink
«NavigationStack» یک پشته مسیر است. «NavigationLink» یک دکمه رفتن است. روی آیتم می زنیم و صفحه جزئیات باز می شود.
import SwiftUI
struct Detail: View {
let text: String
var body: some View {
Text(text)
.navigationTitle("Detail")
}
}
struct NavStackDemo: View {
var body: some View {
NavigationStack {
List(1...3, id: \.self) { i in
NavigationLink(
"Item \\(i)",
destination: Detail(
text: "Item \\(i)"
)
)
}
.navigationTitle("Items")
.toolbar {
ToolbarItem(
placement: .navigationBarTrailing
) {
Button("Add") {
}
}
}
}
}
}
نمایش مودال ها (Sheet و Alert)
«Sheet» صفحه ای شناور است. «Alert» هشدار کوتاه است. هر دو با State کنترل می شوند.
import SwiftUI
struct ModalDemo: View {
@State private var showSheet = false
@State private var showAlert = false
var body: some View {
VStack(
spacing: 12
) {
Button("Show Sheet") {
showSheet = true
}
Button("Show Alert") {
showAlert = true
}
}
.sheet(
isPresented: $showSheet
) {
VStack(
spacing: 12
) {
Text("Hello from a sheet!")
Button("Close") {
showSheet = false
}
}
.padding()
.presentationDetents([
.medium
])
}
.alert(
"Are you sure?",
isPresented: $showAlert
) {
Button(
"Cancel",
role: .cancel
) {
}
Button(
"OK",
role: .destructive
) {
}
} message: {
Text("This is a confirmation alert.")
}
.padding()
}
}
ناوبری برنامه نویسی (NavigationPath)
با «NavigationPath» مسیر را در کد می سازیم. دکمه می زنیم و مقصدها به مسیر اضافه می شوند.
import SwiftUI
struct NumberDetail: View {
let n: Int
var body: some View {
Text("Number: \\(n)")
}
}
struct PathDemo: View {
@State private var path: [Int] = []
var body: some View {
NavigationStack(
path: $path
) {
VStack(
spacing: 12
) {
Button("Go to 42") {
path.append(42)
}
Button("Back") {
if !path.isEmpty {
_ = path.removeLast()
}
}
}
.navigationTitle("Path Demo")
.navigationDestination(
for: Int.self
) { n in
NumberDetail(
n: n
)
}
}
}
}
گام های عملی
- یک NavigationStack بساز و عنوان بده.
- برای هر ردیف، NavigationLink قرار بده.
- برای مودال ها، State تعریف کن و Sheet/Alert فعال کن.
- برای کنترل دقیق، از NavigationPath استفاده کن.
نکته: عنوان ها را کوتاه بگذار. پیدا کردن صفحه ها آسان تر می شود.
پیمایش مرتبط
صفحه استک های تنبل برای لیست های طولانی مفید است. همچنین راهنمای ناوبری SwiftUI را علامت گذاری کن.
جمع بندی سریع
- NavigationStack پشته مسیر است.
- NavigationLink دکمه رفتن است.
- Sheet و Alert مودال های رایج هستند.
- NavigationPath ناوبریِ کدنویسی است.