Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Coloring a Row in an NSTableView

What I am looking to do is set the background color of the selected row in an NSTableView when a I button is clicked. I've seen other cases where people have used tableView:willDisplayCell:forTableColumn:row: and setBackgroundColor: but I don't think that will work in my situation where I want it to happen when a button is clicked.

I know that I can find the selected row with NSTableView's selectedRow method and set the Background color for a cell with setBackgroundColor:, but what I don't know how to do is get from a NSInteger for the selected row to an NSCell to set the background color of.

like image 784
Joshua Avatar asked Jan 08 '10 14:01

Joshua


1 Answers

NSTableView uses only one instance of NSCell for each column. When drawing the contents, the cell is updated for each row. That’s why there’s no method to get a cell for a specified row—you have to modify the cell in tableView:willDisplayCell:forTableColumn:row:.

You can tell the table view to update only one row using reloadDataForRowIndexes:columnIndexes:.

like image 116
Nikolai Ruhe Avatar answered Sep 27 '22 18:09

Nikolai Ruhe