我可能会问一个非常简单的问题,但我无法弄清楚如何摆脱这个问题, 要求是,
- (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,
现在我的问题是如何处理零条件, 此外,在为两个列设置NSCell之后,此函数将转到另一个委托函数
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
我相信,正确设置dataSet后我不需要使用此功能,
通过以下实现它崩溃,但我无法弄清楚,出了什么问题,
我正在设置正确的dataSource和委托,
答案 0 :(得分:1)
您是否尝试过调用setBackgroundColor并传递清晰的颜色?
[myTableView setBackgroundColor:[[NSColor clearColor]];
如果您使用此方法,请记得告诉周围的NSScrollView不要绘制它的背景。
或者,考虑将表格的背景提供为CALayer。
关于在单个列中绘制图像和文本,Apple的开发人员关系已发布了自定义NSCell ImageAndTextCell。您可以将此单元格与NSTableView和NSOutlineView实例一起使用。此自定义单元格用于在单个列中绘制图像和文本。