Edit Mode (Edit Mode)
«حالت ویرایش (Edit Mode)» یعنی اجازه جابجایی و حذف در لیست. با یک دکمه وارد ویرایش می شوی. سپس می توانی آیتم ها را مرتب کنی یا پاک کنی؛ مثل جابجایی صندلی ها در کلاس.
ویرایش با دکمه آماده EditButton
اینجا با EditButton وارد ویرایش می شویم. سپس حذف و جابجایی فعال می شود.
import SwiftUI
struct EditButtonDemo: View {
@State private var items: [String] = ["A", "B", "C"]
var body: some View {
NavigationStack {
List {
ForEach(items, id: \\.self) { value in
Text(value)
}
.onDelete { offsets in
items.remove(atOffsets: offsets)
}
.onMove { source, destination in
items.move(fromOffsets: source, toOffset: destination)
}
}
.navigationTitle("Edit Mode")
.toolbar {
EditButton()
}
}
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
EditButtonDemo()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
گام های عملی — EditButton
- یک آرایه State برای داده ها بساز.
- با ForEach لیست را نمایش بده.
- رویدادهای onDelete و onMove را اضافه کن.
- EditButton را داخل toolbar قرار بده.
نکته: در حالت ویرایش، دستگیره جابجایی کنار آیتم ها دیده می شود.
تبدیل دستی حالت ویرایش با دکمه سفارشی
اگر دکمه مخصوص می خواهی، EditMode را خودت مدیریت کن. سپس با environment(\\.editMode, ...) آن را به لیست بده.
import SwiftUI
struct EditCustomDemo: View {
@State private var items: [String] = ["A", "B", "C"]
@State private var editMode: EditMode = .inactive
var body: some View {
VStack {
List {
ForEach(items, id: \\.self) { value in
Text(value)
}
.onDelete { offsets in
items.remove(atOffsets: offsets)
}
.onMove { source, destination in
items.move(fromOffsets: source, toOffset: destination)
}
}
.environment(\\.editMode, $editMode)
Button(editMode.isEditing ? "Done" : "Edit") {
editMode.toggle()
}
}
}
}
private extension EditMode {
mutating func toggle() {
self = isEditing ? .inactive : .active
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
EditCustomDemo()
}
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
گام های عملی — سفارشی
- یک State از نوع EditMode بساز.
- editMode را به محیط ویو بده.
- با یک دکمه، حالت را جابجا کن.
هشدار: در ویرایش، اعتبارسنجی حذف را فراموش نکن. مثلا جلوگیری از حذف آخرین مورد.
پیوندهای مفید
برای اکشن کشیدن به اکشن کشیدن برو. همچنین برای ظاهر لیست ها به سبک های لیست سر بزن. ساخت فرم تنظیمات هم در Form است.
جمع بندی سریع
- حالت ویرایش جابجایی و حذف را فعال می کند.
- EditButton راه سریع و استاندارد است.
- با EditMode سفارشی سازی بیشتری داری.
- حذف را با onDelete کنترل کن.
- مرتب سازی را با onMove انجام بده.