我有两个UIViews都使用相同的笔尖:
都从PictureCell
继承的LabelCell
和ParentCell
。两者都使用笔尖picturecell.xib
,因为它们的布局非常相似。PictureCell
和LabelCell
都覆盖了setImage
中称为ParentCell
的方法。
当前picturecell.xib
的所有者设置为PictureCell
。
我通过执行PictureCell
实例化[[NSBundle mainBundle] loadNibNamed:@"picturecell" owner:self options:nil][0];
我将如何实例化LabelCell
?
最佳答案
我将为每个单元格创建单独的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方法中,您可以添加任何特定于该子类的自定义视图。
关于ios - 与另一个UIView共享 Nib 时如何初始化UIView子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28160313/