5
我有一個NSTableView顯示我有的對象數組。對於這些對象(行)中的每一個,我想根據我在每個對象上運行的函數的結果更改顯示文本的顏色;每行着色NSTableView文本
因此,例如表中存在於另一個列表(或其他需求)中的所有對象我想以綠色文本顯示它們,而不存在的對象以紅色顯示。
我該怎麼做呢?
我有一個NSTableView顯示我有的對象數組。對於這些對象(行)中的每一個,我想根據我在每個對象上運行的函數的結果更改顯示文本的顏色;每行着色NSTableView文本
因此,例如表中存在於另一個列表(或其他需求)中的所有對象我想以綠色文本顯示它們,而不存在的對象以紅色顯示。
我該怎麼做呢?
假設您的表中有NSTextFieldCell(對於其他單元格,設置文本顏色可能會有所不同),您可以通過實施NSTableView的委託方法來實現此目的。
首先,您必須在Interface Builder或代碼中爲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文檔頁面瞭解更多詳情。
在我使用的表中,我只有NSTextFieldCell的,但是如果我有不同的情況,該方法不能工作嗎? – Tristan 2010-05-07 08:41:19
好吧,不是所有的單元格都有「textColor」和「setTextColor:」方法,就像NSButtonCell一樣。這只是一件要檢查的事情。 – 2010-05-07 10:21:29