从列表中删除项目行 - 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")
            }
        }
    }
 }

如果您的 TaskIdentifiable(如果不值得),那么您可以像

这样进行删除操作
.swipeActions(edge: .leading) {
    Button(role: .destructive){
        withAnimation {
            tasks.removeAll { task.id == [=10=].id }
        }
    } label: {
        Label("Delete", systemImage: "trash")
    }
}