[macOS] テーブルビューを使ってみる。(1)では、Cell Basedでやったんだが、View Basedでやってみる。

[macOS] テーブルビューを使ってみる。(1)と同じようにやっていく。

違うところは、
ViewControllerクラスにNSTableViewDataSourceプロトコルとNSTableViewDelegateプロトコルを追加する。

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?

の代わりに

func tableView(_ tableView: NSTableView,  viewFor tableColumn: NSTableColumn?, row: Int) -> NSView?

を実装する。

    // 表示するデータをセットしたViewを返す。
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        let cell = tableView.make(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
        if let tcol = tableColumn {
            if(tcol.identifier == "Name") {
                cell.textField?.stringValue = datas[row].name
            } else if(tcol.identifier == "Age") {
                cell.textField?.stringValue = "\(datas[row].age)"
            }
        }
        return cell
    }

TableViewのContent ModeをView Basedにする。
TableViewのdelegateもView Controllerに接続する。

こんなところだ。