繁体   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