環境:バインディングなしのビューベースの 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 に関連付け/マップするにはどうすればよいですか?