在tableview中显示图像单元格

时间:2010-07-20 23:38:56

标签: objective-c cocoa

我试图在tableview中显示图像单元,但程序崩溃..

这是我的imageCell类:

@interface ImageCell : NSTextFieldCell {
    NSImage *imageIcon;
    NSString *labelStr;
}
@property (retain) NSImage *imageIcon;
@property (retain) NSString *labelStr;

- (id) initWithLabel:(NSString *) labelString imageName:(NSString *) imageString;

程序运行时,它崩溃并显示错误消息:

-[NSTextFieldCell labelStr]: unrecognized selector sent to instance 0x10011f160 

但我已经提供了自己的imageCell类......

有什么我做错了,谢谢!

这是我的tableview委托&数据源:

- (void) awakeFromNib {

    self.list = [[NSMutableArray alloc] init];
    [self.list addObject:[[ImageCell alloc] initWithLabel:@"Library" imageName:@"album.tiff"]];

    // set first cell here
    NSTableColumn *col = [[self.tableView tableColumns] objectAtIndex:0];
    [col setDataCell:[list objectAtIndex:0]];
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)pTableView {

    return [self.list count];
}

- (id)tableView:(NSTableView *)pTableView objectValueForTableColumn:(NSTableColumn *)pTableColumn row:(int)pRow {

    ImageCell *imageCell = (ImageCell *)[self.list objectAtIndex:pRow];
    return imageCell.labelStr;
}

- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell 
                                            forTableColumn:(NSTableColumn *)tableColumn 
                                                       row:(NSInteger)pRow {

    ImageCell *imageCell = (ImageCell *)cell;
    imageCell.image = [[self.list objectAtIndex:pRow] imageIcon];
    [imageCell setTitle:imageCell.labelStr];
}

1 个答案:

答案 0 :(得分:1)

文档未指定-tableColumns返回的表列具有任何特定顺序的任何保证。尝试询问-tableColumnWithIdentifier :(并确保您的表列具有在nib中指定的标识符)。