0

我可能会问非常简单的问题,但我无法摆脱这个问题,要求是,

  1. 表格应在其旁边显示图像和一些文本。为此,我在表格中添加了两列
  2. NSTableView 应该是透明的。为此,我创建了一个 CustomNSTableView 类,在内部覆盖 drawRect 方法以不绘制背景,并告诉单元格不要绘制背景。
  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 == nil 条件,如在文档中给出的,第一次为每一行,当我需要为整行设置单个列时,这将用 tableCOlumn nil 调用,但是如果我返回它的崩溃并带有评论 BAD_ACCESS ,

现在我的问题是如何处理 nil 条件,同样在这个函数中,在为两个 Column 设置 NSCell 之后,它会转到另一个委托函数

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

我相信,正确设置 dataSet 后,我​​不需要使用此功能,

通过以下实现,它崩溃了,但我无法弄清楚,出了什么问题,

我正在设置正确的数据源和委托,

4

1 回答 1

1

您是否尝试过调用 setBackgroundColor 并传递清晰的颜色?

[myTableView setBackgroundColor:[[NSColor clearColor]];

如果你使用这个方法,记得告诉周围的 NSScrollView 不要画它的背景。

或者,考虑将表格的背景提供为CALayer

关于在单列中绘制图像和文本,Apple 的开发者关系已经发布了一个自定义的 NSCell,ImageAndTextCell。您可以将此单元格与 NSTableView 和 NSOutlineView 实例一起使用。此自定义单元格处理在单个列中绘制图像和文本。

于 2011-01-23T06:20:48.067 回答