我有两个UIViews都使用相同的笔尖:

都从PictureCell继承的LabelCellParentCell。两者都使用笔尖picturecell.xib,因为它们的布局非常相似。

PictureCellLabelCell都覆盖了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/

10-10 13:38