iphone – 如何在UITableViewCell中替换imageView?

我有一个继承自UI
ImageView的类型,但增加了一些额外的功能.我想将它作为图像视图放入我的UITableViewCells中,但我不想做一个全新的单元格布局,以便我可以添加这个图像.

当我尝试直接设置图像视图(self.imageView = myImageView)时,我收到编译错误,告诉我imageView是只读的.有没有办法解决这个问题,还是需要编写一个新的表格视图单元类?

为了更清晰:

@interface MyImageViewClass : UIImageView {

}

@end

==========================

@interface MyTableCellClass : UITableViewCell {

}

@end

@implementation MyTableCellClass

-(void) setupCell
{
    MyImageView *imageView = [[[MyImageView alloc] init] autorelease];
    self.imageView = imageView;  // <---- THIS THROWS A COMPILE ERROR
}

@end

最佳答案 这里有几种选择.

>您只需将自己的图像视图插入到与普通图像视图相同位置的单元格中.在tableView:willDisplayCell:forRowAtIndexPath:中,您可以设置图像视图的框架以匹配默认框架(因此您将获得Apple的布局逻辑).然后只为图像单元格设置图像而不是默认图像.
>你也可以这样做,但是“偷”了tableView中的图像:willDisplayCell:….只需设置myImageView.image = imageView.image并清除imageView的图像.这会使它更透明但更神奇.
>获得幻想,ISA将imageView调到您的班级.您必须在课堂上没有额外的ivars或综合属性才能使其工作,否则您遇到的崩溃将是奇怪的.搜索“isa swizzle”或“class swizzle”.

点赞