0

2 つの列を持つ NSArrayController にバインドされた NSTableView があります。1 つの列は、配列コントローラーの配置されたオブジェクトにバインドされ、文字列を表示します。

別の列に画像を表示したいのですが、うまくいきません。NSImageCell を列にドラッグして画像を手動で設定しましたが、実行時に表示されません。再確認しましたが、画像はリソース ディレクトリにあります。

何か不足していますか?その画像を表示するには、他に何をすればよいですか?

4

1 に答える 1

2

各行に同じ画像を表示したいですか?それが「手動」で設定している理由ですか?そのために、NSTableViewDataSource メソッドとバインディングを組み合わせることができます。文字列列は通常どおりバインドされますが、画像列はバインドされません。識別子が設定されています (「imageColumn」など)。次に、numberOfRowsInTableView: と tableView:objectValueForTableColumn:row: を使用して、配列コントローラーのオブジェクト数を提供し (正しい行数になるようにします)、正しい列の値を要求するときは常に静止画像を返します (ID を確認します)。それ以外の場合は nil を返します。

画像が静的でない場合 (つまり、何らかのインジケーターとして使用したい場合)、上記の方法 (何らかの値に基づいた画像を返す) またはバインディングを使用できます。Bindings を使用するには、"status" (数値) など、配列コントローラーが保持しているクラスにプロパティを追加します。次に、ステータス番号を対応する画像に変換するカスタム NSValueTransformer を使用します。列は、値トランスフォーマーを使用して、配列コントローラーの ArrangeObjects.status にバインドされます (使用方法については、NSValueTransformer を参照してください。登録してから、その名前を使用する必要があります)。結果は、特定のステータスに対応する列の画像です。

于 2010-03-05T12:04:46.740 に答える