Swift ForEach 的 onDelete 方法代码演示

5 min read

在 SwiftUI 中,我们可以使用 ForEach 来循环遍历数组或者集合,这个功能非常方便。同时,我们还可以使用 onDelete 方法来删除某个元素。下面是一个简单的代码演示:

struct ContentView: View {
    @State var fruits = ["苹果", "香蕉", "橙子", "柚子"]
    
    var body: some View {
        List {
            ForEach(fruits, id: \.self) { fruit in
                Text(fruit)
            }
            .onDelete { indexSet in
                fruits.remove(atOffsets: indexSet)
            }
        }
    }
}

这个代码演示中,我们创建了一个名为 ContentView 的视图。在这个视图中,我们添加了一个列表,列表中的每一个元素都是 fruits 数组中的一个水果元素。

在 ForEach 中,我们指定了 id 为 .self,这是为了确保每一个元素都有一个唯一的标识。如果我们不指定 id,SwiftUI 将会警告我们。

在 onDelete 方法中,我们使用 remove(atOffsets:) 方法来删除指定位置的元素。在这个例子中,我们删除了一组 indexSet,这个 indexSet 包含了用户选择的所有行的索引。

当用户选择一行并向左滑动时,就会出现一个删除按钮,用户点击按钮后,对应的水果元素就会被删除。