自定义tableViewCell,代码入口为-initWithStyle:或者-awakeFromNib, 不能是-initWithFrame:

在自定义 ELBloodRecordListCell时,习惯性的在-initWithFrame中,写了100多行布局子控件的代码,app运行后,居然使用的全是空白的系统cell,没有创建和添加任何子控件,经过排查,发现原因如下:

自定义tableViewCell,代码入口为-initWithStyle:或者-awakeFromNib, 不能是-initWithFrame:

//错误
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    }
    return self;
}


//正确
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
    }
    return self;
}

但是UICollectionViewCell初始化时没有style参数的方法,故使用父类UIView通用的初始化方法-initWithFrame:

@interface ELBloodRecordDetailCollectionCell : UICollectionViewCell

@end


@implementation ELBloodRecordDetailCollectionCell
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
    }
    return self;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容