NSOutlineView中行的背景颜色

时间:2016-09-27 19:17:41

标签: swift macos nsoutlineview

如何在NSOutlineView中设置1个特定行的背景颜色?我没有运气试过这个:

func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
    let newRow = NSTableRowView()
    newRow.backgroundColor = NSColor.red
    return newRow
}

1 个答案:

答案 0 :(得分:2)

您需要的是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。你应用的样式被覆盖outlineView应用自己的样式。该方法旨在用于子类化NSTableRowView