每行着色NSTableView文本

时间:2010-05-07 05:17:39

标签: objective-c cocoa nstableview text-coloring

我有一个显示我拥有的对象数组的NSTableView。对于这些对象(行)中的每一个,我想根据我在每个对象上运行的函数的结果来更改显示的文本的颜色;

例如,表格中存在于另一个列表中的所有对象(或其他一些要求)我想以绿色文本显示它们,而不存在的对象显示为红色。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:6)

假设您的表中有NSTextFieldCell(对于其他单元格,设置文本颜色可能会有所不同),您可以通过实施NSTableView的委托方法来实现此目的。

首先,您必须在Interface Builder或代码中为NSTableView定义委托。例如,这可以是您的应用程序控制器。

然后,只需实现以下方法:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    NSTextFieldCell *cell = aCell;
    if (...) {
        [cell setTextColor:[NSColor greenColor]];
    } else if (...) {
        [cell setTextColor:[NSColor redColor]];
    } else {
        [cell setTextColor:[NSColor blackColor]];
    }
}

每次NSTableView绘制单元格时,您都有机会在绘制之前对其进行修改。

查看NSTableViewDelegate文档页面了解更多详情。