NSTreeNode オブジェクトの配列にバインドされた NSTreeController に NSBrowser を接続しました。Content バインディングと Content Value バインディングを設定してツリー コントローラを適切に参照することで、テキスト部分を機能させるのは簡単ですが、バインディングを使用して各セルの画像を設定するにはどうすればよいでしょうか。
2 に答える
残念ながら、NSBrowserCellを使用してこれを簡単に行うことはできません。ブラウザの列に別のセルを使用します。このセルは、-setObjectValue:で渡されたオブジェクト値を取得し、独自のテキストと画像を適切に入力します。
バインディングのみを使用してブラウザ セルに画像を表示する組み込みのメカニズムはありません。必要に応じてそのようなシステムを装備することもできますが、私の経験では、すべてのものにバインディングを使用していると言うことができるように、フープをジャンプする価値があるよりも面倒な場合があり、古い方法で物事を行う方が簡単です。
ブラウザのセルに画像を配置するための「従来の」方法は、ブラウザのデリゲート メソッドを実装することです。
- (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(NSInteger)row column:(NSInteger)column
これにより、セルがブラウザーによって描画される前に、必要に応じてセルをカスタマイズできます。/Developer/Examples/AppKit にある SimpleBrowser の例を見てください。このデリゲート メソッドの使用方法の例がそこにあります。ただし、そのプロジェクトで使用するカスタム セルは必要ありません。このプロジェクトは、NSBrowserCell が独自の画像描画メカニズムを提供する前の 10.2 日前からさかのぼります。