从列表中删除项目行 - SwiftUI
Delete a item row from list - SwiftUI
现在在 SwiftUI 3.0 和 iOS15 中我们有一个 swipeActions() 方法
但是当使用 swipeActions() 时不再使用 onDelete(perform: )
我无法编写操作代码来从列表中删除项目
List{
TextField("Create new task...", text: $newTaskText)
.onSubmit {
taskVM.tasks.append(Task(title: newTaskText, isCompleted: false))
newTaskText = ""
}
.submitLabel(.done)
ForEach($taskVM.tasks) { $task in
HStack{
Text(task.title)
Spacer()
Text(task.isCompleted ? "Completed ✅" : "")
.foregroundColor(.gray)
}
.swipeActions(edge: .trailing) {
Button{
task.isCompleted.toggle()
} label: {
Label("Complete", systemImage: task.isCompleted ? "clear" : "checkmark")
}
.tint(task.isCompleted ? .red : .green)
}
.swipeActions(edge: .leading) {
Button(role: .destructive){
print("Deleted")
} label: {
Label("Delete", systemImage: "trash")
}
}
}
}
如果您的 Task
是 Identifiable
(如果不值得),那么您可以像
这样进行删除操作
.swipeActions(edge: .leading) {
Button(role: .destructive){
withAnimation {
tasks.removeAll { task.id == [=10=].id }
}
} label: {
Label("Delete", systemImage: "trash")
}
}
现在在 SwiftUI 3.0 和 iOS15 中我们有一个 swipeActions() 方法
但是当使用 swipeActions() 时不再使用 onDelete(perform: )
我无法编写操作代码来从列表中删除项目
List{
TextField("Create new task...", text: $newTaskText)
.onSubmit {
taskVM.tasks.append(Task(title: newTaskText, isCompleted: false))
newTaskText = ""
}
.submitLabel(.done)
ForEach($taskVM.tasks) { $task in
HStack{
Text(task.title)
Spacer()
Text(task.isCompleted ? "Completed ✅" : "")
.foregroundColor(.gray)
}
.swipeActions(edge: .trailing) {
Button{
task.isCompleted.toggle()
} label: {
Label("Complete", systemImage: task.isCompleted ? "clear" : "checkmark")
}
.tint(task.isCompleted ? .red : .green)
}
.swipeActions(edge: .leading) {
Button(role: .destructive){
print("Deleted")
} label: {
Label("Delete", systemImage: "trash")
}
}
}
}
如果您的 Task
是 Identifiable
(如果不值得),那么您可以像
.swipeActions(edge: .leading) {
Button(role: .destructive){
withAnimation {
tasks.removeAll { task.id == [=10=].id }
}
} label: {
Label("Delete", systemImage: "trash")
}
}