簡體   English   中英

NSCell中的NSView

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM