应用场景:在自定义的UItableviewcell 中使用 UICollectionView
遇到问题:UICollectionViewCell 的代理方法不调用
问题原因:初始化UICollectionView 时的位置不对
// 错误的写法
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self) {
// collecitonView 代理及注册
// 子页面配置
[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 代理及注册
// 子页面配置
[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 ];
}