Раскраска текста NSTableView в строке - PullRequest
5 голосов
/ 07 мая 2010

У меня есть NSTableView, который отображает массив объектов, которые у меня есть.Для каждого из этих объектов (строк) я хотел бы изменить цвет отображаемого текста в зависимости от результатов функции, которую я запускаю для каждого объекта;

Так, например, все объекты в таблице, которые существуют вдругой список (или какое-то другое требование) Я хочу отобразить их зеленым текстом, а несуществующие объекты - красным.

Как мне поступить?

1 Ответ

6 голосов
/ 07 мая 2010

Предполагая, что в вашей таблице есть NSTextFieldCell (для других ячеек настройка цвета текста может отличаться), вы можете добиться этого путем реализации метода делегата NSTableView .

Сначала вы должны определить делегата для NSTableView , либо в Интерфейсном Разработчике, либо в вашем коде. Например, это может быть контроллер вашего приложения.

Затем просто реализуйте следующий метод:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    NSTextFieldCell *cell = aCell;
    if (...) {
        [cell setTextColor:[NSColor greenColor]];
    } else if (...) {
        [cell setTextColor:[NSColor redColor]];
    } else {
        [cell setTextColor:[NSColor blackColor]];
    }
}

Каждый раз, когда NSTableView будет рисовать ячейку, у вас есть возможность изменить ее, прежде чем она будет нарисована.

Дополнительные сведения см. На странице документации NSTableViewDelegate .

...