私は非常に簡単な質問をしているかもしれませんが、これを取り除く方法を得ることができません、要件は、
- テーブルには、画像とその横にテキストが表示されます。そのために、テーブルに2つの列を追加しました
- NSTableViewは透過的である必要があります。これを行うために、背景を描画しないようにオーバーライドdrawRectメソッド内にCustomNSTableViewクラスを作成し、セルにdrawBackgroundを描画しないように指示しました。
- 次のハードルは画像の表示方法です。次の方法でオーバーライド/処理する必要がありました。
。
- (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==nil条件を追加しました。これは、指定されたドキュメントのように、各行で初めて、行全体に単一の列を設定する必要がある場合にtableCOlumn nilで呼び出されますが、コメントBAD_ACCESSでクラッシュを返す場合、
今私の質問は、nil条件を処理する方法です。また、両方の列にNSCellを設定した後のこの関数では、別のデリゲート関数に移動します
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
dataSetを適切に設定した後は、この関数を使用する必要はないと思います。
次の実装ではクラッシュしますが、私はそれを理解することができません、何が問題なのですか、
適切なデータソースとデリゲートを設定しています、