我有2个UIViews都使用相同的笔尖:
PictureCell
和LabelCell
都继承自ParentCell
。这两个都使用nib picturecell.xib
,因为它们的布局非常相似。
PictureCell
和LabelCell
都会覆盖setImage
中名为ParentCell
的方法。
目前picturecell.xib
的所有者设置为PictureCell
。
通过PictureCell
[[NSBundle mainBundle] loadNibNamed:@"picturecell" owner:self options:nil][0];
我如何实例化LabelCell
?
答案 0 :(得分:2)
我会为每个单元格制作单独的xib,并使用registerNib:forIdentifier:而不是像你那样加载它们。您可以将单元格复制并粘贴到新的xib,这样就不必重新制作它。
编辑后:
我确实找到了一种方法,可以在两个单元子类之间共享xib中的公共UI。而不是制作一个单元格的xib,而不是制作一个UIView。将所有常见子视图添加到其中,并使文件所有者成为基本单元类,以便您可以挂接在该类中创建的任何出口。在基本单元的init方法中,您可以将此视图添加为contentView的子视图(“content”是在基本单元的.h中创建的属性)。
@implementation RDBaseCell
-(instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
_content = [[NSBundle mainBundle] loadNibNamed:@"CellContent" owner:self options:nil][0];
[self.contentView addSubview:_content];
}
return self;
}
-(void)layoutSubviews {
[super layoutSubviews];
self.content.frame = self.contentView.bounds;
}
在表视图控制器中,注册两个子类的类。在子类的init方法中,您可以添加特定于该子类的任何自定义视图。