2011-05-22 81 views
0

我已经读了很多关于这一点,但我不能得到它的工作,我有一个定制的NSCell与此代码的NSView中的NSCell

#import "ServiceTableCell.h" 
@implementation ServiceTableCell 

-(void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { 
    NSLog(@"I'm being called"); 
    NSView *newview = [[NSView alloc] initWithFrame:cellFrame]; 
    NSImage *image = [NSImage imageNamed:@"bg.png"]; 
    NSRect imagesize; 
    NSImageView *IMV = [[NSImageView alloc] initWithFrame:imagesize]; 
    [IMV setImage:image]; 
    [newview addSubview:IMV]; 
    [controlView addSubview:newview]; 
} 

这我NSTableView的数据源:

- (long)numberOfRowsInTableView:(NSTableView *)tableView { 
    return 3; 
} 

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(long)row 
{ 
    return [[ServiceTableCell alloc] initTextCell:@"dd"]; 
} 

据我所知,drawwithframe ...被调用时,单元格初始化,但它永远不会被调用,所以,我错过了什么?

回答

0

方法tableView:objectValueForTableColumn:row:应该返回一个对象值,而不是一个单元格。

请注意,NSTableView与您可能熟悉的UITableView有很大不同。例如,数据源不会返回填充数据的单元格,而是返回数据。而NSTableView中的单元格类型是按列设置的,在一列中不能有不同类型的单元格(从技术上讲,这并非完全正确,您可以通过 - [NSTableColumn dataCellForRow:]获得不同的单元格)。

+0

所以,现在的问题是,如何创建自定义单元格并将其设置为我的列? – 2011-05-22 23:19:50

0

所以,感谢@puzzle的答案和更多的挖掘答案是将我的NSCell的子类设置为InterfaceBuilder中的主单元格,然后调用该方法,正如他所说,在tableView:objectValueForTableColumn:row :我需要返回数据然后绘制它。