2011-01-25 17 views
5

NSTable View 1 için aşağıdaki özellikleri değiştirmem gerekiyor 1 - Renk Değiştir: Satır Rengi ve Metin Rengi seçildiğinde seçildiğinde 2 - Metin Rengini Değiştir, her satır için i temsilci yöntemi willDisplayCell geçersiz gereken bazı girdi parametresi, her satır için textColor değiştirmek içinNSTableView Bir satır için Metin Rengi Değiştirme

, bu şimdiye kadar i, yapmış budur

- oluşturma tablo ----

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] 

; 

- - Diğer temsilci Yöntemi -------------

- (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"; 

    } 

} 

---- Şimdi bu i metin rengini --- ile

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

} 

kuruyorum nasıl Yukarıdaki kod, Log içindeki istisnalara gidiyor, satırını görebiliyordum - [NSCell setTextColor:]: örneğe gönderilen tanınmayan seçici gönderiliyor Metin Alanı hücresini ayarlamam gereken bir yere benziyor, ama nasıl ve nerede olduğumu bilmiyorum , lütfen bana yardım edin,

Başka bir şey i s, Başlangıçta hücre için herhangi bir arka plana ihtiyacım yok, ama bir kez hücre seçildiğinde, o zaman ben de arka plan değiştirmek veya vurgu rengi söyleyebiliriz, ben aynı WillDIsplayCell de alabilir miyim

cevap

7

Bunu yapmamdan beri bir süre oldu ama bunu yapmam gerektiğinde Corbin Dunn tarafından bu blog gönderisine her zaman başvuruyorum: Cocoa: willDisplayCell delegate method of NSTableView, [NSCell setTextColor], and “source lists”

Bu arada Corbin, Apple'da çalışıyor ve NSTableView'den sorumlu olduğum şeyden sorumlu. Kakao hakkında blog yazarken onu mutlaka işaretledim.

+0

Teşekkürler, bir deneyeyim :) – Amitg2k12

+0

Teşekkürler, Magic – Amitg2k12

+0

Sevindim, yardımcı olmaktan memnun. – sosborn