質問: MacOSXアプリでNSTableViewを使ったプログラムを作成しております。 TableViewにはチェックボックスのButton CellとText Field Cellの2列を持たせています。(【画像1】) 配列からデータを取得して、【画像2】のようなチェック付きのリストを作成しました。 【画像3】のようにWindowsのC#でListViewを使用した場合であれば CheckedItemsでチェックの入っている行を取得できますが、これをOSXのswiftで同じようにボタンを押してチェックの入っている行を取得するにはどのようにすればよろしいのでしょうか? ListViewとTableViewで全く異なるものではありますが、もし方法があれば教えていただければと思います。 【画像1】 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/ca24814a63157214245c6122ee3ca866.jpeg) 【画像2】ボタンを押してチェックの入っている行を取得したい ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a46ddbe07cd9e87e6874e0b2b630f7f6.jpeg) 【画像3】WindowsのC# ListView での動作 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/ad1eb93de116f15d0f0acbcc1aefdee1.jpeg)
回答: まず、セルの値が変わったときにNSTableViewDataSourceの`setObjectValue`が呼ばれますので、その中でdataArrayを更新します。 ``` func tableView(tableView: NSTableView, setObjectValue object: AnyObject?, forTableColumn tableColumn: NSTableColumn?, row: Int) { if ((tableColumn!.identifier) == "testCheck") { //objectには変更後のチェックの状態(0か1)が入っています dataArray[row][tableColumn!.identifier] = object as! Int } } ``` あとは、Buttonが押されたときにdataArrayを参照してon/offを判断すればよいです。