2016-09-27 4 views
3

Wie kann ich die Hintergrundfarbe für eine bestimmte Zeile in einem NSOutlineView festlegen? Ich habe schon versucht, diese ohne Glück:Hintergrundfarbe für Zeile in NSOutlineView

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

Antwort

1

Was Sie stattdessen brauchen, ist outlineView(didAdd:forRow). Hier ist, was Ihr Code aussehen würde:

func outlineView(_ outlineView: NSOutlineView, didAdd rowView: NSTableRowView, forRow row: Int) { 
    rowView.backgroundColor = .red 
} 

Beachten Sie, dass im Gegensatz zu den meisten anderen outlineView Delegatmethoden, outlineView(didAdd:forRow) gibt Ihnen einen Zeilenindex anstelle eines item. Sie können den Artikel erhalten, indem Sie outlineView.item(atRow: row) anrufen.

Der Grund, warum Ihr Code nicht funktionierte, ist, dass outlineView(rowViewForItem:) die NSTableRowView erstellt, bevor ein Styling angewendet wird. Das Styling, das Sie dort appliziert haben, wurde überschrieben outlineView mit einem eigenen Styling. Das Verfahren soll für Unterklassen NSTableRowView verwendet werden.

+0

arbeitete für mich, thx – JohnnyAW

Verwandte Themen