NSTableViewを使い方をプロジェクト作るところから順に書いてみる。
まず、Xcodeを起動してFile -> New -> ProjectでmacOSのCocoaを選ぶ。
次の画面で
Product Name(ここではTestTableViewと入力)、Organization Nameに名前、Organization Identifierにドメイン名を逆順に並べたやつを入力する。それ以外は、↑画像のように設定する。Bundle Identifierは、Organization IdentifierとProduct Nameから作られて、アプリを識別するためのIDとなる。
Nextボタンを押して、次の画面でプロジェクトの保存先を指定する。
テーブルに表示するデータのクラスを作る。
FIle -> New -> FileでSwift Fileを選択して、ファイル名をPerson.swiftとしてTargetsでTestTableViewを選んでファイルを作る。
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を配置する。
1.プロジェクトナビゲータでMain.storyboardを選択する。
2.ライブラリペインでオブジェクト・ライブラリを選択する。
3.オブジェクト・ライブラリからTableViewを探してViewControllerにドラッグして置く。
1.Table Viewを選択する。
2.アトリビュート・インスペクターを選択する。Columnsにカラム数を指定する。ここでは2を指定する。
3.Content ModeをCell Basedにする。
1.Table Columnを選択する。(左側のTable Column)
2.インスペクタペインでアイデンティティ・ペインを選択する。
2.identifierにNameを入力する。
もう一つのTable Column(右側のTable Column)を選択して、identifierにAgeを入力する。このidentifierはカラムを特定するのに使う。
Table ViewをCtrlキーを押しながらView Controllerにドラッグしはなすと、
が出るので、dataSourceを選択しView Controllerを繋ぐ。
上の方にある再生ボタンみたいなのを押すと実行でき、次のようなウインドウが表示される。
けっこー、疲れたので今日はここまでw
次は、選択されたのを検出する方法を書こうかな。
コメント