如何在NSOutlineView中更改节点的样式?

时间:2009-09-11 15:30:45

标签: objective-c cocoa

我试图弄清楚如何在NSOutlineView中更改组节点的样式。 使用setSelectionHighlightStyle,我可以更改整个列表样式。但我想只更改组节点的样式。 我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

NSOutlineViewNSTableView的子类。在NSOutlineView代理中实施tableView:willDisplayCell:forTableColumn:row:

tableView:willDisplayCell:forTableColumn:row:实现类似的内容:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
    if ([aTableView isGroupRow: rowIndex]) {
        //modify aCell
    }


}

答案 1 :(得分:3)

当我遇到类似的问题时,@ Benedict提到的方法从未被触发过。这是因为NSOutlineView有一个单独的方法:

- (void) outlineView:(NSOutlineView*)aTableView
     willDisplayCell:(id)aCell
      forTableColumn:(NSTableColumn*)aTableColumn
                item:(id)item;

请参阅NSOutlineViewDelegate protocol的文档。 (这个正式的协议在10.6中是新的 - 在OS X的早期版本中,这些方法在NSObject上作为一个类实现。)