环境:基于视图的 NSTableView 没有绑定。
问题:将列的复选框操作映射到其数据源
(即,我如何实时知道复选框事件发生在哪一行?)。
在不使用 IB 绑定的情况下,如何将其各自 NSTableView 行中的任何特定 NSButton/Checkbox 操作与其数据源相关联?
我希望能够使用其 UI 状态更新复选框的相应数据数组(选中框-> 数据源中的 1)。
也就是说,将结构或闭包的数组与它们的 1:1 表条目进行映射。因此,单击“选择”/行会使用数据源数组更新其各自的布尔标志。
以下代码片段显示了我如何填充 UI:
typealias GeoTuple = (geoDesc:String,geoSelected:Int)
var geoList = [GeoTuple]()
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
var cellView:NSTableCellView?
let cellID = tableColumn?.identifier
guard nil != cellID else {
cellView = NSTableCellView()
return cellView
}
cellView = (tableView.makeViewWithIdentifier(cellID!, owner: self) as? NSTableCellView)
guard nil != cellView else {
print("{ODYInitializePricingProductViewController} *** NO CELL VIEW GENERATED *** \n Check cell identifiers.")
return nil
}
let currentTableColumn = ODYInitPricingTableColumnIdentifier(rawValue:cellView!.identifier!)
switch currentTableColumn! {
...
case .geoSelectFlag:
if row < geoList.count {
if let selectButton = cellView?.viewWithTag(1) as? NSButton {
selectButton.integerValue = geoList[row].geoSelected
}
}
...
return cellView
}
问题:如何捕获特定的 NSButton-Check 切换事件,并将此事件关联/映射到其各自的数据源:geoList?