Окраска текста NSTableView на строку

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

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

Как я пошел бы о выполнении этого?

5
задан Tristan 7 May 2010 в 05:17
поделиться

1 ответ

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

Во-первых, вы должны определить делегата для NSTableView, либо в Interface Builder, либо в вашем коде. Это может быть, например, контроллер вашего приложения.

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

- (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 для более подробной информации.

6
ответ дан 14 December 2019 в 13:29
поделиться