NSTableView Изменение цвета текста для строки - PullRequest
5 голосов
/ 25 января 2011

Мне нужно изменить следующие свойства для моего NSTable View 1 - Изменить цвет: Цвет строки и Цвет текста при его выборе 2 - Изменить цвет текста, для каждой строки это зависит от некоторого входного параметра,

Чтобы изменить цвет текста для каждой строки, я должен переопределить метод делегата willDisplayCell, это то, что я делал до сих пор,

- Создание таблицы ----

pMyTableView       = [[[CustomTableView alloc] initWithFrame:clipViewBounds] autorelease];


NSTableColumn*  firstColumn     = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease];

[firstColumn setWidth:35];

[pMyTableView  addTableColumn:firstColumn];

NSTableColumn*  secondColumn        = [[[NSTableColumn alloc] initWithIdentifier:@"secondColumn"] autorelease];

[secondColumn setWidth:180];

[pMyTableView  addTableColumn:secondColumn];
    [pMyTableView setRowHeight:30];

    [self SetContactTableDisplayAttribute];

[pMyTableView setDataSource:self];
[scrollView setDocumentView:pOnLineCTView];

    [pMyTableView setDelegate:self]

;

-- Другой метод делегата -------------

- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{
    if([pColName isEqualToString:@"secondColumn"]) 
    {
           // Here there is some logic , to get the proper string that i wanted to display
        return @"tempString";

    }

}

---- Вот как я устанавливаю цвет текста ---

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {

    NSString *colName = [aTableColumn identifier];
    if([colName isEqualToString:@"secondColumn"]){
        NSTextFieldCell *pCell = aCell;
        [pCell setTextColor:[NSColor blueColor]];
    }

}

При использовании приведенного выше кода в журнале происходит его исключение. Я мог видеть строку - [NSCell setTextColor:]: нераспознанный селектор, отправленный экземпляру.Понятия не имею, пожалуйста, помогите мне,

Другое дело, что изначально я не нуждаюсь в каком-либо фоне для ячейки, но однажды, когда ячейка выбрана, тогда мне также может понадобиться изменить фон или вы можете выделитьцвет, могу ли я получить то же самое в УиллеDIsplayCell тоже

1 Ответ

7 голосов
/ 26 января 2011

Прошло много времени с тех пор, как я это сделал, но я всегда ссылаюсь на этот пост Корбина Данна, когда мне нужно это сделать: Какао: метод делегирования willDisplayCell из NSTableView, [NSCell setTextColor] и «source списки»

Кстати, Корбин работает в Apple и, насколько я понимаю, отвечает за NSTableView. Когда он пишет о какао, я всегда отмечаю это как закладку.

...