NSTableViewを使い方をプロジェクト作るところから順に書いてみる。

まず、Xcodeを起動してFile -> New -> ProjectでmacOSのCocoaを選ぶ。

001

次の画面で

002

Product Name(ここではTestTableViewと入力)、Organization Nameに名前、Organization Identifierにドメイン名を逆順に並べたやつを入力する。それ以外は、↑画像のように設定する。Bundle Identifierは、Organization IdentifierとProduct Nameから作られて、アプリを識別するためのIDとなる。
Nextボタンを押して、次の画面でプロジェクトの保存先を指定する。
テーブルに表示するデータのクラスを作る。
FIle -> New -> FileでSwift Fileを選択して、ファイル名をPerson.swiftとしてTargetsでTestTableViewを選んでファイルを作る。

003

Personクラスを作る。名前(name)と年齢(age)プロパティを用意する。まー、例でよくあるよねーw

class Person {
    var name:String
    var age:Int
    
    init(name:String, age:Int) {
        self.name = name
        self.age = age
    }
}

ViewControllerクラスに表示するデータを用意する。"class ViewController 〜"の次の行あたりに次のコードを追加する。

    var datas = [
        Person(name: "山田太郎", age: 21),
        Person(name: "山田花子", age: 22)
    ]

ViewControllerクラスにNSTableViewDataSourceプロトコルを実装する。"class ViewController: NSViewController"の後に", NSTableViewDataSource"を追加する。必要なメソッドをクラスに追加する。

    // 行数を返す。
    func numberOfRows(in tableView: NSTableView) -> Int {
        return datas.count
    }
    
    // 表示するデータを返す。
    func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
        if let tcol = tableColumn {
            if(tcol.identifier == "Name") {
                return datas[row].name
            } else if(tcol.identifier == "Age") {
                return datas[row].age
            }
        }
        return ""
    }

ソースのようにnumberOfRowsで行数を返す。
tableViewでは表示するデータを返す。rowで行、tableColumnのidentifierでどのカラムか判断してそのデータを返す。tableColumnのidentifierはInterface Builderで指定しておく。

Interface BuilderでTableViewを配置する。

004

1.プロジェクトナビゲータでMain.storyboardを選択する。
2.ライブラリペインでオブジェクト・ライブラリを選択する。
3.オブジェクト・ライブラリからTableViewを探してViewControllerにドラッグして置く。

005

1.Table Viewを選択する。
2.アトリビュート・インスペクターを選択する。Columnsにカラム数を指定する。ここでは2を指定する。
3.Content ModeをCell Basedにする。

006-2

1.Table Columnを選択する。(左側のTable Column)
2.インスペクタペインでアイデンティティ・ペインを選択する。
2.identifierにNameを入力する。
もう一つのTable Column(右側のTable Column)を選択して、identifierにAgeを入力する。このidentifierはカラムを特定するのに使う。

007

Table ViewをCtrlキーを押しながらView Controllerにドラッグしはなすと、

008

が出るので、dataSourceを選択しView Controllerを繋ぐ。
上の方にある再生ボタンみたいなのを押すと実行でき、次のようなウインドウが表示される。

009

けっこー、疲れたので今日はここまでw
次は、選択されたのを検出する方法を書こうかな。