如何处理在macOS应用程序上的SwiftUI选中行的双击?



我想处理表格上的双击。

这是我的代码

Table(transactions, selection: $selectedTransactions) {

TableColumn("Date") { transaction in
Text(transaction.transactionDate, formatter: dateFormatter)
.foregroundColor(transaction.transactionStatus.statusColor)
.contentShape(Rectangle())
.gesture(TapGesture(count: 2).onEnded{
print("double click")
})
}
}

现在我可以处理双击我的细胞。但是我只想处理选中行上的双击,我不想在每一列上重复我自己。

你知道怎么做吗?

看起来是可能的:

struct ContentView: View {
@State private var transactions = [
Transaction(date: "Jan 01", status: .pending),
Transaction(date: "Jan 02", status: .completed),
Transaction(date: "Jan 03", status: .failed),
Transaction(date: "Jan 04", status: .pending),
Transaction(date: "Jan 05", status: .completed),
]

@State private var selectedTransactions = Set<Transaction.ID>()


var body: some View {
Table(transactions, selection: $selectedTransactions) {
TableColumn("Date") { transaction in
Text(transaction.date)
.foregroundColor(transaction.status.statusColor)
}
// TableColumn("Status", value: .status.rawValue) // Optional second column
}
.onTapGesture(count: 2) {
print(selectedTransactions)
}
}
}
struct Transaction {
var date: String
var status: TransactionStatus

enum TransactionStatus: String {
case pending
case completed
case failed

var statusColor: Color {
switch self {
case .pending:
return .orange
case .completed:
return .green
case .failed:
return .red
}
}
}
}
extension Transaction: Identifiable {
var id: String { date }
}

相关内容

最新更新