在SwiftUI如何实现滑动删除列表中的任何行?

12 min read

要在SwiftUI中实现滑动删除列表中的任何行,请使用.onDelete方法,并将其附加到列表视图中的数据源中。这会自动向每行添加一个滑动删除按钮,可以让用户轻松地删除该行。

例如,以下代码演示如何创建一个简单的列表视图,其中包含一些数据,并允许滑动删除其中的任何行:

struct ContentView: View {
    @State private var tasks = ["Buy groceries", "Pay bills", "Take out trash"]
    
    var body: some View {
        List {
            ForEach(tasks, id: \.self) { task in
                Text(task)
            }
            .onDelete(perform: delete)
        }
    }
    
    func delete(at offsets: IndexSet) {
        tasks.remove(atOffsets: offsets)
    }
}

在上面的代码中,我们使用了SwiftUI中的List视图,它允许我们轻松地创建一个可滚动的列表。一个列表中的每一行都是由一个ForEach视图创建的,我们使用它来循环遍历我们的任务数组并创建一个文本视图来显示每个任务。

.onDelete方法被附加到每个ForEach视图,并将delete函数作为参数传递给它。该函数接收一个包含要删除的索引的IndexSet对象,并使用remove(atOffsets:)方法从tasks数组中删除相应的任务。

现在用户可以通过滑动任何行来轻松删除它们。