NSOutlineView:如何为有和没有孩子的项目提供不同的自定义颜色?

时间:2013-03-26 20:55:20

标签: objective-c nsoutlineview

我有一个NSOutlineView的自定义子类,它使用TextFieldCell作为单元格。一些有孩子的物品(代表一群孩子)。

我想为包含子项的项目设置自定义颜色,为没有子项的项目设置另一种自定义颜色。我尝试在IB中更改它,但颜色仅针对子项更改,而在代码中我也可以设置自定义颜色,但仅针对子项。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

经过深入研究后,似乎唯一的方法是覆盖drawRow:子类上的NSOutlineView方法

答案 1 :(得分:0)

您还可以实现NSOutlineViewDelegate方法 - (void)outlineView:(NSOutlineView *)aTableView willDisplayCell:(id)aCell       forTableColumn:(NSTableColumn *)aTableColumn项目:(id)item;

在其中你可以有一个类似于以下内容的部分:

if ([self outlineView:self isGroupItem: item]){
NSColor *color;
if ([item.children count] == 0) {
color = [NSColor redColor];
}
else {
color = [NSColor blueColor];
}
[aCell setDrawsBackground:YES];
[aCell setBackgroundColor: color];
}

对格式化感到抱歉,我仍然很陌生。 这应该工作,因为我已经使用此代码类似的东西。 我希望这就是你要找的东西。