【发布时间】:2021-08-30 20:05:42
【问题描述】:
import SwiftUI
struct ContentView: View {
@State private var items: [ItemModel] = Array(0...100).map { ItemModel(id: $0, title: "item \($0)", age: $0) }
@State private var selection = Set<ItemModel.ID>()
@State private var sorting = [KeyPathComparator(\ItemModel.age)]
var body: some View {
Table(items, selection: $selection, sortOrder: $sorting) {
TableColumn("id", value: \.id) { Text("\($0.id)") }
TableColumn("title", value: \.title)
TableColumn("age", value: \.age) { Text("\($0.age)") }
}
.onChange(of: sorting) {
items.sort(using: $0)
}
.font(.caption)
.frame(width: 960, height: 540)
}
}
struct ItemModel: Identifiable {
var id: Int
var title: String
var age: Int
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
这是一个在 Model.age 上排序的表格的工作示例,并且支持多选, 我想要单选并双击一行打开工作表,这可能吗? 还有如何获取选定的项目对象?
谢谢你????
【问题讨论】:
-
要进行单选,您只需将选择@State 更改为 ItemModel.ID?而不是相同类型的 Set ,但我也在努力解决其他问题,因为没有 .onTap 或类似的表行处理程序,所以处理点击来做事。
标签: xcode macos swiftui xcode13