每行着色NSTableView文本
问题描述:
我有一个NSTableView显示我有的对象数组。对于这些对象(行)中的每一个,我想根据我在每个对象上运行的函数的结果更改显示文本的颜色;每行着色NSTableView文本
因此,例如表中存在于另一个列表(或其他需求)中的所有对象我想以绿色文本显示它们,而不存在的对象以红色显示。
我该怎么做呢?
答
假设您的表中有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的,但是如果我有不同的情况,该方法不能工作吗? – Tristan 2010-05-07 08:41:19
好吧,不是所有的单元格都有“textColor”和“setTextColor:”方法,就像NSButtonCell一样。这只是一件要检查的事情。 – 2010-05-07 10:21:29