2013-05-20 90 views
0

我在爲NSTableView定製NSCell中的文本時遇到問題。下面是主窗口: enter image description here可可:NSCell中針對NSTableView的自定義文本

該窗口,顯示一個圖標,標題,進度指示器和message.As我的電腦是10.6表視圖,我用基於細胞的tableview中實現它。自定義單元格基於Apple提供的ImageAndTextCell。該消息繪製如下:

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { 
NSMutableDictionary *fontAttributes = [NSMutableDictionary dictionaryWithCapacity:1]; 
    [fontAttributes setObject:[NSFont fontWithName:@"Hei" size:12] forKey:NSFontAttributeName]; 
    if (!self.msg) { 
     self.msg = @"default"; 
    } 
    CGRect textFrame = cellFrame; 
    textFrame.origin.x += 20; 
    textFrame.origin.y += 20; 
    [self.msg drawAtPoint:textFrame.origin withAttributes:fontAttributes]; 
}

msg是單元格的副本NSString屬性。 我遇到兩個問題:

1當我選擇一個小區,該消息將被解僱,就像: enter image description here

只有你不選擇它,將它再次顯示。我應該如何解決它?

2我需要自定義標題。正如你所看到的,每個單元格都有一個標題,sae或IBM。 它是從委託的返回值:

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;

我可以改變位置,顏色,或它的字體?

回答

0

嘗試這樣並設置字體,你可以使用setfont程序的API的NSCell: -

-(void)awakeFromNib 
{ 
    cellArray=[[NSMutableArray alloc]init]; 
    NSCell *cell=[[NSCell alloc]initTextCell:@"firstCellValue"]; 
    NSCell *cell2=[[NSCell alloc]initTextCell:@"secondCellValue"]; 
    mutableDictionary=[NSMutableDictionary dictionary]; 
    [mutableDictionary setObject:cell forKey:@"FirstColumn"]; 
    [mutableDictionary setObject:cell2 forKey:@"secondColumn"]; 
    [cellArray addObject:mutableDictionary]; 
} 

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView 
{ 
    return [cellArray count]; 
} 
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
{ 
    if ([[aTableColumn identifier] isEqualToString:@"FirstColumn"]) 
    { 
     NSCell *cell1=[mutableDictionary objectForKey:@"FirstColumn"]; 
     [aTableColumn setDataCell:cell1]; 
     return [cell1 objectValue]; 
    } 
    else if ([[aTableColumn identifier] isEqualToString:@"secondColumn"]) 
    { 
     NSCell *cell2=[mutableDictionary objectForKey:@"secondColumn"]; 
     [aTableColumn setDataCell:cell2]; 
     return [cell2 objectValue]; 
    } 
    else 
    { 
     return nil; 
    } 
} 
相關問題