2013-10-24 3 views
7

Я разрабатываю приложение MAC и включаю tableView. Хотите изменить цвет выбранной строки на желтый.NSTableview Изменить цвет подсветки

+0

Это может помочь - http://stackoverflow.com/questions/7038709/change-highlighting-color-in- nstableview-in-cocoa –

ответ

13

Установить это на табличном:

[yourtableview setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone]; 

и реализовать следующий метод делегата от NSTableView как:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
{ 
    if ([[aTableView selectedRowIndexes] containsIndex:rowIndex]) 
    { 
     [aCell setBackgroundColor: [NSColor yellowColor]]; 
    } 
    else 
    { 
     [aCell setBackgroundColor: [NSColor whiteColor]]; 
    } 
    [aCell setDrawsBackground:YES]; 
} 
+0

Спасибо ... я попробую это .. :) – Raghav

+5

Предполагая, что вы говорите о сотовой таблице, это не работает по той же причине, что и предыдущий ответ, если только ваша ячейка не не имеют прокладки вообще (и, возможно, даже не тогда). Чтобы изменить выделение строки, переопределите метод highlightSelectionInClipRect: и нарисуйте цвет фона самостоятельно, как показано здесь: http://stackoverflow.com/questions/7038709/change-highlighting-color-in-nstableview-in-cocoa – dgatwood

0

Если вы хотите heighlight только отдельные ячейки столбца, то реализовать, как это ниже : -

- (void)tableView:(NSTableView *)tableView 
    willDisplayCell:(id)cell 
    forTableColumn:(NSTableColumn *)tableColumn 
       row:(NSInteger)row 
{ 
    if ([[tableColumn identifier] isEqualToString:@"yourColumm"]) 
    { 
     [cell setBackgroundColor:[NSColor yelloColor]]; 
    } 
} 
+0

фон ячейки в выбранной строке полностью покрывается подсветкой строки, поэтому установка цвета фона ячейки не влияет на внешний вид ячейки, насколько я могу судить. – dgatwood

Смежные вопросы