每行着色NSTableView文本

Tri*_*tan 5 cocoa objective-c nstableview text-coloring

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

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

我该怎么做呢?

Lau*_*ble 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]];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

有关更多详细信息,请查看NSTableViewDelegate文档页面.