我有一个继承自 UIImageView 的类型,但添加了一些额外的功能。我想将它作为图像视图放入我的 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
到你的班级。你must在你的类中没有额外的 ivars 或综合属性来使其工作,否则你得到的崩溃将会很奇怪。搜索“isa swizzle”或“class swizzle”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)