[英]NSView in NSCell
我已經讀了很多關於此的內容,但是我無法使它正常工作,我有一個自定義的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 ...是在初始化單元格時調用的,但從未調用過,所以,我想念的是什么?
tableView:objectValueForTableColumn:row:方法應返回一個對象值,而不是單元格。
請注意, NSTableView與您可能熟悉的UITableView有很大不同 。 例如,數據源不返回填充有數據的單元格,而是返回數據。 而且NSTableView中的單元格類型是按列設置的,因此在一列中不能有不同類型的單元格(從技術上講,這並不完全正確,可以通過-[NSTableColumn dataCellForRow:]來具有不同的單元格)。
因此,感謝@puzzle答案和更多的答案,是將我的NSCell子類設置為InterfaceBuilder中的主單元,然后調用了該方法,正如他所說,在tableView:objectValueForTableColumn:row:我需要返回數據然后繪制它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.