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

标签 swift macos nstableview nsoutlineview

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

我试图保持蓝色选择颜色,即使表格失去了焦点。

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

最佳答案

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

class CustomRowView: NSTableRowView {

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

然而,将 NSTableView 强制为用户自定义行有点棘手。如果您使用 Nib 或 Storyboard ,请添加新的“假”行并设置您的自定义类。然后将标识符设置为“NSTableViewRowViewKey”。 这是一个屏幕截图:

enter image description here

这样 TableView (或大纲 View - 没有区别)将使用您的自定义行 View 。

关于swift - 当表格失去焦点时,NSTableView 突出显示颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794170/

相关文章:

objective-c - NSApplicationDelegate 应用程序 :openFile. 永远不会到达 openFile: 函数

ruby-on-rails - RVM : failure in installing latest version of ruby on Mac OSX El Capitan

cocoa - 如何在 Interface Builder 中构建 NSTableRowView 原型(prototype)

cocoa - tableCellView 内的 NSButton : how to use the "action invocation" for a View Based NSTableView/NSArrayController

ios - .enforceQoS 标志如何提高优先级?

ios - 解析 JSON - "Variable ' jsonObject' 在初始化之前使用

swift - 快速创建秒表

xcode - Instruments 想要获得分析其他进程的权限 Jenkins

macos - 在Mac OS X上使用AudioUnit检测扬声器/耳机

objective-c - 如何获取NSTableView动画委托(delegate)事件?