動的にNSTableColumnを追加してBinding

動的に、カラムを追加して、そこにBindingを利用した値を表示させたいんだけど、一筋縄ではいかないらしい。

  • 該当するビューの配下のFieldを取得する
  • Fieldとビューをバインドする

なる手順が必要らしい。

IB上の”Table Cell View”は、該当Columnのビューに相当するらしく、そこからは、ObjectValueというキーを経由して参照できるらしい。

とりあえず、以下のように書いたらバインドできたんだけど、最初の1つのみ。

[objc]
let tableColumn = self.transactionListView.tableColumns[columnIndex]
if let account = MCAccount.namedAccount(db, name: tableColumn.identifier.rawValue) {
let newView = self.transactionListView.view(atColumn: self.transactionListView.tableColumns.count – 1, row: 0, makeIfNecessary: true)
let textField = newView!.subviews[0]
let keyPath = String.init(format: “objectValue.%@”, arguments: [account.name])
textField.bind(.value, to: newView, withKeyPath: keyPath)
[objc]

むりやりセルをバインドしてるんだけど、おそらく、マスター(?)みたいなものに対してBindしないといけないんじゃないかと思う。(けど、どこにも書いてない・・・・)

結局、func tableView(NSTableView, viewFor: NSTableColumn?, row: Int) のドキュメントをよく読むと書いてありました。
けど、気づかないよねこの説明。

Leave a Reply

Your email address will not be published. Required fields are marked *