2

NSTableColumn の行ごとに異なる小さな画像 (アイコン) を表示する方法はありますか?

必ずしも新しい列を追加する必要はありません。各行のテキストの前にアイコンを追加できるかどうか疑問に思っていました。

メソッドがあることは知っています: - (void)setDataCell:(NSCell *)aCell. ただし、このメソッドはすべての行に同じセルを使用しているように見えますが、これは私が望むものではありません。

NSTableColumn をサブクラス化する必要のないこの問題の解決策はありますか? そうでない場合、何をサブクラス化する必要がありますか?

ありがとう

4

1 に答える 1

0

問題の列のセルを NSImageCell にします。オブジェクト ライブラリから「画像セル」を列にドラッグすることで、Interface Builder でこれを行うことができます。次に、列を選択すると、データ、値、値のパス、または Valueurl バインディングのいずれかを介して画像ソースにバインドできます。どちらを選択するかは、モデルのソース プロパティがそれぞれ NSData、NSImage、NSString パス、または NSURL url を返すかどうかによって異なります。詳細については、NSImageCell バインディングに関するドキュメントを参照してください。

セルは、描画のパフォーマンス最適化として使用される軽量クラスであるため、各行で同じです。これは、テキスト列のセルが各行に対して同じ文字列を描画する必要があるのと同様に、各行がセルを使用して同じ画像を描画する必要があるという意味ではありません。

画像をテキストと同じ列に配置する必要がある場合は、duDE が説明するようなことを行う必要があります。私の考えでは、この場合でもバインドは可能であるはずですが、それを機能させるにはさらにコードを記述する必要があります。そうするのではなく、おそらくビュー ベースの NSTableView を使用することに切り替えます。これにより、複数のビューを単一の列/行に簡単に配置でき、余分な作業なしで引き続きバインディングを使用できるようになります。

編集: duDE の回答は削除されましたが、要約すると、画像とテキストの両方を描画するカスタム NSCell サブクラスを作成することが提案されました。

于 2013-03-04T18:10:04.230 に答える