我在自定义NSCell
NSTableView
中的文字时遇到问题。以下是主窗口:
窗口有一个表格视图,显示图标,标题,进度指示器和消息。由于我的计算机是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当我选择一个单元格时,该消息将被解除,就像:
只有你取消选择它,它会再显示出来。我该怎么做才能解决它?
2我需要自定义标题。如您所见,每个单元格都有标题,sae或IBM。 它是委托返回的值:
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
我可以更改它的位置,颜色或字体吗?
答案 0 :(得分:0)
尝试这样并设置字体,你可以使用setfont api for 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;
}
}