【问题标题】:Coloring NSTableView Text per row每行着色 NSTableView 文本
【发布时间】:2011-02-16 16:47:34
【问题描述】:

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

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

我该怎么做呢?

【问题讨论】:

    标签: objective-c cocoa nstableview text-coloring


    【解决方案1】:

    假设您的表格中有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 文档页面了解更多详情。

    【讨论】:

    • 在我使用的表格中,我只有 NSTextFieldCell,但如果我有不同的方法,这种方法不能按原样工作吗?
    • 好吧,并不是所有的单元格都有“textColor”和“setTextColor:”方法,就像NSButtonCell一样。这只是需要检查的事情。
    猜你喜欢
    • 1970-01-01
    • 2012-06-10
    • 2011-06-15
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2018-08-26
    • 2018-10-12
    相关资源
    最近更新 更多