【发布时间】:2019-09-01 18:33:54
【问题描述】:
假设我有一个 swiftui 视图显示按部门划分的员工列表,我如何删除一个部分中的项目? 同样的方式向左滑动删除uitableview中的行为。
import SwiftUI
struct ContentView: View {
var data: [String : [String]] = ["DeptA": ["EmpA", "EmpB", "EmpC"], "DeptB": ["EmpD", "EmpE", "EmpF"]]
var body: some View {
NavigationView {
List {
ForEach(data.keys.map { String($0) }, id: \.self) { dept in
Section(header: Text(dept)) {
ForEach(self.data[dept]!, id: \.self) { emp in
Text(emp)
}.onDelete(perform: self.deleteEmp)
}
}
}
.navigationBarTitle("Employees")
}
}
private func deleteEmp(indexSet: IndexSet) {
print(indexSet.first!)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
【问题讨论】:
-
您可以关闭
.onDelete,将要删除的索引集与部门或其他标识信息一起传递给self.deleteEmp。 -
终于找到了一个可行的解决方案,我觉得很愚蠢。谢谢。
-
在你传递一个方法本身(而不是调用它)的地方,你总是可以传递一个闭包。它只是不会经常发生,因此并不明显同意