代码之家  ›  专栏  ›  技术社区  ›  Tristan

为每行的nstableview文本着色

  •  5
  • Tristan  · 技术社区  · 15 年前

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

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

    我该怎么做呢?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Laurent Etiemble    15 年前

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

    首先,必须为 N表视图 ,无论是在接口生成器中还是在代码中。例如,这可以是您的应用程序控制器。

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

    - (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 文档页了解更多详细信息。