如何在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。应用的样式正在覆盖应用其自身样式的样式。该方法用于子类化。

10-08 15:44