2011-01-21 9 views
0

、私は非常に単純な質問をされるかもしれないが、私はこのを取り除くためにどのように取得することはできませんよ、 要件があり、NSTableViewの表示画像が

  1. 表は次の画像やテキストを表示する必要がありますそれに。これを行うには、テーブルに2つの列を追加しました。
  2. NSTableViewは透過的でなければなりません。これを行うために、私はCustomNSTableViewクラスを作成しました。drawRectメソッドのオーバーライドでは、バックグラウンドを描画しないようにし、drawBackgroundにはセルを通知しません。
  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; 

    } 
} 

私は、その所与のドキュメントのように、各行の最初の時間をTableColumnの==ゼロの条件を追加し、私は、行全体のための単一の列を設定する必要がある場合、これはTableColumnのをゼロと呼ばれますが、私なら後に、今、私の質問は、この関数でもゼロの状態、 を処理する方法である列の両方にNSCellのを設定した後、それは私は信じて別のデリゲート関数に

- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

になり、そのコメントのBAD_ACCESSでクラッシュ

を返します設定dataSet適切

、私は適切なデータソースとデリゲートを設定しています

、何が間違っている、私は次の実装では

そのクラッシュ、この機能を使用する必要はありませんが、私はそれを把握することはできませんよ

+0

非常に奇妙な、私はsetRowHeightをコメントする場合は、その打撃をEXE_BAD_ACCESS :( – Amitg2k12

答えて

1

setBackgroundColorを呼び出してクリアカラーを渡してみましたか?

[myTableView setBackgroundColor:[[NSColor clearColor]]; 

この方法を使用する場合は、周囲のNSScrollViewに背景を描画しないように指示してください。

また、テーブルの背景をCALayerとして指定することを検討してください。

イメージとテキストを単一の列に描画することに関して、アップルの開発者関係はカスタムNSCell ImageAndTextCellを公開しています。 NSTableViewインスタンスとNSOutlineViewインスタンスでこのセルを使用できます。このカスタムセルは、単一の列内にイメージとテキストを描画します。