2010-05-07 12 views
5

Mam narzędzie NSTableView wyświetlające tablicę obiektów, które mam. Dla każdego z tych obiektów (wierszy) chciałbym zmienić kolor wyświetlanego tekstu w zależności od wyników funkcji, którą wykonuję na każdym obiekcie;Kolorowanie NSTableView Tekst w wierszu

Na przykład cały obiekt w tabeli, który istnieje na innej liście (lub inne wymaganie) Chcę wyświetlić je w zielonym tekście, a obiekty, które nie istnieją, wyświetlają się na czerwono.

Jak miałbym to zrobić?

Odpowiedz

6

Zakładając, że masz w swojej tabeli NSTextFieldCell (dla innych komórek, ustawienie koloru tekstu może się różnić), możesz to osiągnąć, wdrażając metodę delegowania NSTableView.

Najpierw należy zdefiniować delegata dla NSTableView, w Konstruktorze interfejsów lub w kodzie. Może to być na przykład kontroler aplikacji.

Potem tylko wdrożyć następujące metody:

- (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]]; 
    } 
} 

Każdorazowe NSTableView wyciągnie komórkę, masz możliwość modyfikowania go, zanim się wyciągnąć.

Więcej informacji znajduje się na stronie dokumentacji NSTableViewDelegate.

+0

W tabeli używam mam tylko NSTextFieldCell, ale co, gdybym miał inny byłby ta metoda nie działa tak jak jest? – Tristan

+0

Cóż, nie wszystkie komórki mają metody "textColor" i "setTextColor:", takie jak NSButtonCell. Po prostu trzeba to sprawdzić. –

Powiązane problemy