环境:没有绑定的基于视图的NSTableView。
问题:映射列到其数据源的复选框操作
(也就是说,如何实时知道复选框事件发生在哪一行?)。
在不使用IB绑定的情况下,如何将其各自NSTableView行中的任何特定NSButton/复选框操作与其数据源关联?

I希望能够用UI状态更新复选框的各个数据数组(选中数据源中的-> 1框).
也就是说,用它们的1:1表条目映射一个结构或闭包数组。因此,单击“select”/row使用数据源数组更新其各自的布尔标志。
下面的代码片段显示了如何填充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?
发布于 2016-01-07 21:59:54
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? { ...
...
case .geoSelectFlag:
    if row < geoList.count  {
        if let selectButton = cellView?.viewWithTag(1) as? NSButton {
            selectButton.integerValue = geoList[row].geoSelected
            selectButton.target = self
            selectButton.action = "checkBoxAction:"
        }
    }
...
}
func checkBoxAction(sender:NSButton) {
}
(lldb) po self.geoTableView.rowForView(发件人)3
https://stackoverflow.com/questions/34664673
复制相似问题