【发布时间】:2011-02-16 16:47:34
【问题描述】:
我有一个 NSTableView,它显示我拥有的对象数组。对于这些对象(行)中的每一个,我想根据我在每个对象上运行的函数的结果来更改显示的文本颜色;
因此,例如,表中存在于另一个列表中的所有对象(或其他一些要求)我想以绿色文本显示它们,而不存在的对象以红色显示。
我该怎么做呢?
【问题讨论】:
标签: objective-c cocoa nstableview text-coloring
我有一个 NSTableView,它显示我拥有的对象数组。对于这些对象(行)中的每一个,我想根据我在每个对象上运行的函数的结果来更改显示的文本颜色;
因此,例如,表中存在于另一个列表中的所有对象(或其他一些要求)我想以绿色文本显示它们,而不存在的对象以红色显示。
我该怎么做呢?
【问题讨论】:
标签: objective-c cocoa nstableview text-coloring
假设您的表格中有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 文档页面了解更多详情。
【讨论】: