2011-05-22 85 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 :我需要返回數據然後繪製它。