NSTableViewを使ってみる【swift】
2018-01-26 18:24
このページの環境は
Swift4をベースにしています。
また、開発環境はXcode9
MacosはHighSierra 10.13となります。
ということで、氷翠が現在必要なオブジェクトとして、表組みが必要なので、これを使ってみることにします。
ほぼ、ググって出てきた情報のままですが、とりあえずできたので。
また、現在はSwift5を利用していますが、内容的にはほぼ間違いないことを確認しています。
ここまででわかったのは、Macosのアプリケーションをつくる場合は、「NS〜」という感じのオブジェクトを利用するということ。

ということで、今回使うのは、「NSTableView」という表組み用のオブジェクトです。
こんなものがあるので探してみましょう。
今回の目的はとりあえず、表組みを組むことなので、ウインドウいっぱいに配置しました。
で、カラム数は1。
複数のカラムがあると混乱するといけないので、とりあえず一つだけ。

こんな感じです。

上のような部分でカラム数を変更することができます。
そのあとは「ViewController」とつなげてあげる。今回はこの「ViewController.swift」でのプログラミングとなります。

ということで、ステージに配置した「Table View」から右クリックでドラッグして「View Cotroller」まで線をつなげてあげます。
すると、

こんなのが出てくるので、「dataSource」というところを選択します。
これでデータが反映される仕組みが出来上がったようです。
import Cocoa
class ViewController: NSViewController, NSTableViewDataSource {
let programs = ["Swift", "C", "Java", "JavaScript", "PHP", "Python"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
func numberOfRows(in tableView: NSTableView) -> Int {
return programs.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return programs[row]
}
}
まず、配列変数を用意してあげます。
それが3行目辺りにあるものです。いつでも使えるようにここで宣言しているのでしょう。
そうしないと、下の方にある2つの関数が活きてこない。下2つの関数はテーブルを作成する上で必要になる関数で、「numberOfRows」はテーブルのレコード数を定義しているようだ。もう一つの関数はその内容を返す。
いろいろと疑問点が残っているが、今回はとりあえずここまで。
氷翠はこれで表示できました。
目標は、この2つのカラムが必要なので、そこは次回。