應(yīng)用場(chǎng)景:在自定義的UItableviewcell 中使用 UICollectionView
遇到問題:UICollectionViewCell 的代理方法不調(diào)用
問題原因:初始化UICollectionView 時(shí)的位置不對(duì)
// 錯(cuò)誤的寫法
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self) {
// collecitonView 代理及注冊(cè)
// 子頁面配置
[self initSubViews];
self.selectionStyle = UITableViewCellSelectionStyleNone;
_photoCollectionView.delegate = self;
_photoCollectionView.dataSource = self;
[_photoCollectionView registerNib:[UINib nibWithNibName:@"PhotoCollectionCell" bundle:nil] forCellWithReuseIdentifier:phCollectionIdentifer];
}
return self;
}
-(void)initSubViews {
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
_photoCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:flowLayout];
[self.contentView addSubview:_photoCollectionView ];
}
正確的寫法:
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self) {
// collecitonView 代理及注冊(cè)
// 子頁面配置
[self initSubViews];
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
return self;
}
-(void)initSubViews {
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
_photoCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:flowLayout];
_photoCollectionView.delegate = self;
_photoCollectionView.dataSource = self;
[_photoCollectionView registerNib:[UINib nibWithNibName:@"PhotoCollectionCell" bundle:nil] forCellWithReuseIdentifier:phCollectionIdentifer];
[self.contentView addSubview:_photoCollectionView ];
}