Раскраска строки в NSTableView - PullRequest
5 голосов
/ 08 января 2010

Что я хочу сделать, это установить цвет фона выбранной строки в NSTableView при нажатии кнопки I. Я видел другие случаи, когда люди использовали tableView:willDisplayCell:forTableColumn:row: и setBackgroundColor:, но я не думаю, что это сработает в моей ситуации, когда я хочу, чтобы это происходило при нажатии кнопки.

Я знаю, что могу найти выбранную строку с помощью метода selectedRow NSTableView и установить цвет фона для ячейки с помощью setBackgroundColor:, но я не знаю, как это сделать, это получить из NSInteger для выбранной строки в NSCell, чтобы установить цвет фона.

Ответы [ 3 ]

7 голосов
/ 08 января 2010

NSTableView использует только один экземпляр NSCell для каждого столбца. При рисовании содержимого ячейка обновляется для каждой строки. Вот почему нет способа получить ячейку для указанной строки - вы должны изменить ячейку в tableView:willDisplayCell:forTableColumn:row:.

Вы можете указать табличному представлению обновить только одну строку, используя reloadDataForRowIndexes:columnIndexes:.

6 голосов
/ 27 августа 2012

Чтобы установить цвет фона NSTableview Строка

  - (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell1 forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{
      if(row==1)
         [cell1 setBackgroundColor:[NSColor redColor]];
      else if(row==2||row==3)
         [cell1 setBackgroundColor:[NSColor greenColor]];
      else
         [cell1 setBackgroundColor:[NSColor clearColor]];
}

используя этот метод, мы можем присвоить разный цвет каждой строке. Убедитесь, что drawsBackground включен на NSTextFieldCell, иначе это не будет иметь никакого эффекта!

5 голосов
/ 11 сентября 2013

Если вы просто хотите изменить цвет всей выбранной строки:

NSInteger selectedRow = [self.nsTableView selectedRow];
NSTableRowView* rowView = [self.nsTableView rowViewAtRow:selectedRow makeIfNecessary:NO];
[rowView setBackgroundColor:[NSColor blackColor]];

glhf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...