لیست ها و فرم ها در SwiftUI (SwiftUI Lists & Forms)
در SwiftUI، «لیست (List)» داده ها را نشان می دهد و «فرم (Form)» ورودی می گیرد. مثل دفتر حضور و یک فرم ثبت نام در مدرسه. ساده، منظم، و سریع.
لیست ها (List) با داده های قابل شناسایی
«قابل شناسایی (Identifiable)» یعنی هر آیتم یک شناسه یکتا دارد. سپس با List همه را تمیز نمایش می دهیم.
import SwiftUI
struct Todo: Identifiable {
let id: Int
let title: String
}
struct TodoList: View {
let items: [Todo] = [
Todo(id: 1, title: "Buy milk"),
Todo(id: 2, title: "Walk dog")
]
var body: some View {
List(items) { item in
Text(item.title)
}
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
TodoList()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
نکته: برای داده های پویا از ForEach داخل List استفاده کن.
فرم ها (Form) برای ورودی کاربر
«فرم (Form)» مجموعه ای از کنترل هاست. مانند TextField، Toggle و Stepper. همه در بخش ها گروه بندی می شوند.
import SwiftUI
struct SettingsForm: View {
@State private var name: String = ""
@State private var notifications: Bool = true
@State private var count: Int = 1
var body: some View {
Form {
Section(header: Text("Profile")) {
TextField("Name", text: $name)
}
Section(header: Text("Preferences")) {
Toggle("Notifications", isOn: $notifications)
Stepper("Count: \(count)", value: $count, in: 1...10)
}
}
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
SettingsForm()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
گام های عملی کوتاه
- برای لیست، مدلِ قابل شناسایی بساز.
- با List نمایش بده و در صورت نیاز ForEach بگذار.
- برای فرم، کنترل ها را در Sectionها گروه بندی کن.
هشدار: آیتم های بدون شناسه پایدار، رفتار اسکرول و انیمیشن را به هم می زنند.
پیوندهای مفید
برای مقادیر محیطی به @Environment سر بزن. همچنین فصل لیست در SwiftUI جزئیات بیشتری دارد.
جمع بندی سریع
- لیست ها داده ها را تمیز نشان می دهند.
- فرم ها ورودی کاربر را می گیرند.
- ForEach برای داده های پویاست.
- Section نظم و خوانایی را بالا می برد.