nstableview 1つのセルに画像を表示します
-
16-10-2019 - |
質問
私は非常に簡単な質問をしているかもしれませんが、これを取り除く方法を得ることができません、要件は、
- テーブルは、その横に画像といくつかのテキストを表示する必要があります。そのために、テーブルに2つの列を追加しました
- nstableviewは透明でなければなりません。そのために、背景を描画しないようにOverride DrawRectメソッド内でCustomNstableViewクラスを作成し、Cellにクルックグラウンドを指示しました。
- 次のハードルは画像の表示方法です。次の方法をオーバーライド/処理する必要がありました
.
- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSImage *pCellImage = // Get a valid Image ;
if(tableColumn == nil ) return nil;
NSString *colName = [tableColumn identifier];
if([colName isEqualToString:@"firstColumn"]){
NSCell *pCell = [[NSCell alloc]initImageCell:pCellImage];
return pCell;
}else{
NSCell *pCell = [[NSCell alloc]initTextCell:@"Some text"];
return pCell;
}
}
テーブルコラム== nil条件を追加しました。ドキュメントのように、その指定された行のように、各行で初めて、行全体に1つの列を設定する必要がある場合にテーブルコラムなしで呼び出されますが、コメントでクラッシュする場合はbad_accessでクラッシュします、
ここで私の質問は、NILの状態をどのように処理するかです。また、両方の列にnscellを設定した後のこの機能では、別の代表関数に移動します
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
データセットを適切に設定した後、この機能を使用する必要はありません。
次の実装ではクラッシュしますが、私はそれを理解することができません、何が間違っているのか、
私は適切なデータソースとデリゲートを設定しています、
解決
setbackgroundcolorに電話して透明な色を渡してみましたか?
[myTableView setBackgroundColor:[[NSColor clearColor]];
この方法を使用する場合は、周囲のnsscrollviewに背景を描かないように指示することを忘れないでください。
または、テーブルの背景をとして提供することを検討してください カレイヤー.
画像とテキストを単一の列に描画することに関して、Appleの開発者関係はカスタムNSCELLを公開しています。 imageandtextcell. 。このセルをnstableviewおよびnsoutlineviewインスタンスで使用できます。このカスタムセルは、単一の列内で画像とテキストを描画することを扱います。
所属していません StackOverflow