如何在nsoutlineview中为1个特定行设置背景色?我没有运气就尝试过:
func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
let newRow = NSTableRowView()
newRow.backgroundColor = NSColor.red
return newRow
}
最佳答案
您需要的是outlineView(didAdd:forRow)
。您的代码如下所示:
func outlineView(_ outlineView: NSOutlineView, didAdd rowView: NSTableRowView, forRow row: Int) {
rowView.backgroundColor = .red
}
请注意,与大多数其他
outlineView
委托方法不同,outlineView(didAdd:forRow)
为您提供了一个行索引,而不是一个item
。您可以通过调用outlineView.item(atRow: row)
来获取该项目。代码不起作用的原因是,
outlineView(rowViewForItem:)
在应用任何样式之前创建了NSTableRowView
。应用的样式正在覆盖应用其自身样式的样式。该方法用于子类化。