gpt4 book ai didi

xcode - SwiftUI 3 MacOs 表格单选并双击打开表格

转载 作者:行者123 更新时间:2023-12-04 17:18:09 30 4
gpt4 key购买 nike

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 上排序的表的工作示例,并支持多选,
我想要单选并双击一行打开工作表,这可能吗?
另外我如何获得选定的项目对象?
谢谢🙏

最佳答案

必须改Set<Value.ID>Value.ID仅选择一行,并制作 TapGesture在文本中。

@State private var selection = Set<ItemModel.ID>() // <-- Use this for multiple rows selections
@State private var selection : ItemModel.ID? // <--- Use this for only one row selection
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>() <-- Use this for multiple rows selections
@State private var selection : ItemModel.ID? // <--- Use this for only one row selection
@State private var sorting = [KeyPathComparator(\ItemModel.age)]
@State private var showRow = false

var editRow: some View {
VStack {
Text(items[selection!].title)
.font(.title)
Text("Selected: \(selection.debugDescription)")
Button("Dismiss") {
showRow.toggle()
}.padding()
}
.frame(minWidth:400, minHeight: 400)
}

var body: some View {
VStack {
Table(items, selection: $selection, sortOrder: $sorting) {
TableColumn("id", value: \.id) {
Text("\($0.id)")
.onTapGesture(count: 2, perform: {
if selection != nil {
showRow.toggle()
}
})
}
TableColumn("title") { itemModel in
Text(itemModel.title)
.onTapGesture(count: 2, perform: {
if selection != nil {
showRow.toggle()
}
})
}
TableColumn("age", value: \.age) { Text("\($0.age)") }
}
.onChange(of: sorting) {
items.sort(using: $0)
}
.font(.caption)
.frame(width: 960, height: 540)
}
.sheet(isPresented: $showRow) {
editRow
}
}
}

关于xcode - SwiftUI 3 MacOs 表格单选并双击打开表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67978340/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com