質問

私は非常に簡単な質問をしているかもしれませんが、これを取り除く方法を得ることができません、要件は、

  1. テーブルは、その横に画像といくつかのテキストを表示する必要があります。そのために、テーブルに2つの列を追加しました
  2. nstableviewは透明でなければなりません。そのために、背景を描画しないようにOverride DrawRectメソッド内でCustomNstableViewクラスを作成し、Cellにクルックグラウンドを指示しました。
  3. 次のハードルは画像の表示方法です。次の方法をオーバーライド/処理する必要がありました

.

- (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インスタンスで使用できます。このカスタムセルは、単一の列内で画像とテキストを描画することを扱います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top