自定義tableViewCell,程式碼入口為-initWithStyle:或者-awakeFromNib, 不能是-initWithFrame:

weixin_34148340發表於2019-02-22

在自定義 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;
}

相關文章