当表失去焦点时,NSTableView突出显示颜色

时间:2016-09-30 14:43:56

标签: swift macos nstableview nsoutlineview

我在我的项目中使用NSTableView。当用户点击一行时,我使用标准的蓝色选择颜色。当桌子失去焦点时,选择颜色会变为浅灰色。

我试图保持蓝色选择颜色,即使桌子失去它的焦点。

我已经尝试覆盖NSTableCellView的backgroundStyle,我可以在选择单元格时设置自定义颜色,但是当表格失去焦点时,backgroundColor属性设置为.light。

1 个答案:

答案 0 :(得分:1)

尝试覆盖NSTableRowView,例如我保持灰色:

class CustomRowView: NSTableRowView {

override func drawSelectionInRect(dirtyRect: NSRect) {
    NSColor.secondarySelectedControlColor().set()
    NSRectFill(dirtyRect)
}
}

然而,迫使NSTableView使用自定义行有点棘手。如果你使用笔尖或故事板添加新的"假的"行并设置您的自定义类。然后将标识符设置为" NSTableViewRowViewKey"。 这是一个截屏视频:

enter image description here

这样,表格视图(或大纲视图 - 没有区别)将使用您的自定义行视图。