2016-09-27 16 views
3

NSOutlineViewの特定の行の背景色を設定するにはどうすればよいですか?私は運でこれを試してみました:あなたの代わりに必要なものNSOutlineViewの行の背景色

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

答えて

1

outlineView(didAdd:forRow)です。他のほとんどのoutlineViewデリゲートメソッドとは異なり、outlineView(didAdd:forRow)はあなたの代わりにitemの行インデックスを与えること

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

注:ここでは、あなたのコードは次のようになります。あなたはoutlineView.item(atRow: row)に電話をかけてアイテムを入手できます。

あなたのコードが機能しなかった理由は、outlineView(rowViewForItem:)は、スタイリングが適用される前にNSTableRowViewを作成することです。あなたが適用していたスタイリングは、独自のスタイリングを適用して上書きされていたoutlineViewでした。このメソッドは、NSTableRowViewをサブクラス化するために使用されます。

+0

私のために働いた、thx – JohnnyAW