AnNSTableView
には複数NSCell
の s があります (間接的に を介してNSTableColumn
)。NSCell は Flyweight デザイン パターンに従います。彼らはクッキーカッターです。列ごとに 1 つのセルがあり、行ごとに自分自身を描画するように求められます。 「これが値です。最初の行に描画します。これが 2 行目の値です。」 これは、セルごとにビュー インスタンスを持つビュー ベースのテーブルビューとは対照的です。
NSPopUpButtonCell をサブクラス化し、setXxxValue:
メソッドごとにメッセージを呼び出しNSLog();
てスーパー クラスに転送します。呼び出される唯一のメソッド (たとえば、新しい行を追加するとき、またはテーブルを更新するとき) はsetObjectValue:
. これはドキュメントから期待されています...しかしnull
、それに渡される唯一のものです!! 選択したアイテムのインデックスを含む NSNumber を渡す必要があります。
私のテーブルはうまく描画されます。 セルの動作を拡張/変更したいので、これを理解しようとしています(明らかに、そうでなければサブクラスは必要ありませんでした)。
質問:これはどのように可能ですか? 各行に正しい値を描画するために、NSPopUpButtonCell に値を設定する方法を教えてください。バインディングを考慮しても、重労働をしているのは NSTableColumn ですよね? 私は何が欠けていますか?