要更改NSOutlineView
侧边栏突出显示颜色,NSTableRow
需要使用override func drawSelectionInRect
进行子类化。如果代码中当前没有对NSTableRow
的公开引用,这怎么可能?
func outlineView(outlineView: NSOutlineView, viewForTableColumn: NSTableColumn?, item: AnyObject) -> NSView? {
}
使用emphazised
属性
func outlineViewSelectionDidChange(notification: NSNotification){
let selectedIndex = notification.object?.selectedRow
let object:AnyObject? = notification.object?.itemAtRow(selectedIndex!)
notification.object?.rowViewAtRow(selectedIndex!, makeIfNecessary: false)?.emphasized = false
outlineView.deselectRow(selectedIndex!)
答案 0 :(得分:2)
就像你使用
一样func outlineView(outlineView: NSOutlineView, viewForTableColumn: NSTableColumn?, item: AnyObject) -> NSView? {...}
你可以使用
func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: AnyObject) -> NSTableRowView? {...}
for rowViews。
以下是您的操作方法:
子类NSTableRowView
并实现drawSelectionInRect:
以自定义子类的外观。
通过在rowViewForItem:
中返回它来确保您的outlineView了解您的子类
您可以在此方法here中查看如何返回视图。
由于您只覆盖了drawSelectionInRect:所有其他功能仍然可用。所以你不必做任何其他事情。