如何在NSOutlineView中更改所选行的颜色

时间:2014-02-12 13:39:51

标签: macos view selection nsoutlineview

我正在使用基于查看的NSOutlineView ,这是子类。选择Outline view时,在大纲视图中显示默认蓝色。如何改变选择颜色?

注意:我使用的是基于视图的outlineview,而不是基于单元格的。

我找到了基于单元格的outlineview的方法。

-(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item;

1 个答案:

答案 0 :(得分:2)

你必须继承NSTableRowView,然后覆盖你的子类中的方法drawSelectionInRect:

- (void)drawSelectionInRect:(NSRect)dirtyRect {
    if (self.selectionHighlightStyle != NSTableViewSelectionHighlightStyleNone) {
        NSRect selectionRect = NSInsetRect(self.bounds, 2.5, 2.5);
        [[NSColor colorWithCalibratedWhite:.65 alpha:1.0] setStroke];
        [[NSColor redColor] setFill];
        NSBezierPath *selectionPath = [NSBezierPath bezierPathWithRoundedRect:selectionRect xRadius:6 yRadius:6];
        [selectionPath fill];
        [selectionPath stroke];
    }
}

然后在您的NSOutlineView委托中调用以下内容并返回新的子类

- (NSTableRowView *)outlineView:(NSOutlineView *)outlineView rowViewForItem:(id)item

此方法似乎没有记录,请参阅answer