NSTableView
は、NSCell
(間接的にはNSTableColumn
経由)の倍数を持ちます。 NSCellはFlyweightのデザインパターンに従います。彼らはクッキーカッターです。 1列に1つのセルがあり、それは各行ごとに描画するように求められます。 "値は1行目に描画し、2行目などには値を設定します。これは、セルごとのビューインスタンスを持つビューベースのテーブルビューとは対照的です。setObjectValue:nilだけが呼び出されたときにNSPopUpButtonCellが正しく表示されるのはなぜですか?
NSPopUpButtonCellをサブクラス化し、setXxxValue:
メソッドごとに、NSLog();
を呼び出し、メッセージをスーパークラスに転送します。呼び出される(たとえば、新しい行を追加するときやテーブルを更新するときなど)唯一のメソッドはsetObjectValue:
です。これはdocumentationから期待されていますが、null
はそれに渡される唯一のものです!選択されたアイテムインデックスを持つNSNumberが渡される必要があります。
テーブルが正常に描画されます。私はこれを理解しようとしています。なぜなら、セルの振る舞いを拡張/変更したいからです(明らかにそうでなければ、サブクラスを必要としないためです)。
質問:これはどのように可能ですか?各行に適切な値を描画するために、NSPopUpButtonCellを値に設定する方法。バインディングを考慮しても、NSTableColumnは重い持ち上げをしていますか?私は何が欠けていますか?
同じです:カスタム 'NSPopUpButtonCell'サブクラスで、メニュー項目を変更する必要があります。' setObjectValue: 'はすべてnilで呼び出されます。これ以上の洞察はありますか? – Jay