NSTableView更改一行的文本颜色

问题描述:

我需要更改以下属性以用于我的NSTable视图 1 - 更改颜色:选择其行时的行颜色和文本颜色 2 - 更改文本颜色对于其取决于的每一行一些输入参数,NSTableView更改一行的文本颜色

为了改变文字颜色的每一行,我应该重写委托方法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:]:无法识别的选择器发送到实例 看起来像某处我需要设置文本字段单元格,但如何以及在哪里我不知道, 请帮助我,

另一件事我s,最初我不需要任何细胞背景,但是一旦细胞被选中,那么我也许需要改变背景,或者你可以说突出显示颜色,我可以在WillDIsplayCell中获得相同的效果

它有已经有一段时间了,因为我已经这样做了,但是当我需要做这件事时,我总是会引用Corbin Dunn撰写的这篇博客文章:Cocoa: willDisplayCell delegate method of NSTableView, [NSCell setTextColor], and “source lists”

顺便说一下,Corbin在苹果公司工作,并且据我了解负责NSTableView。当他对任何可可的博客进行博客时,我一定要将其加入书签。

+0

谢谢,让我试试:) – Amitg2k12 2011-01-26 05:42:29