createPreparedCellForItemAtIndexPath中的UICollectionView断言失败

时间:2017-08-08 09:53:29

标签: ios cocoa-touch uicollectionview

我的代码很简单,只想创建一个流布局UIColloctionView

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 7;
}

- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [UICollectionViewCell new];
    return cell;
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return CGSizeMake(SCREEN_WIDTH / 2 - 5, 160);
}

这是错误

  

***断言失败 - [UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:],   /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.9.1/UICollectionView.m:2115

2 个答案:

答案 0 :(得分:0)

正如文件所述

  

集合视图要求您始终将视图出列,而不是在代码中明确创建它们

这与UITableView不同,只是一直对单元格进行deque

<强>错

UICollectionViewCell *cell = [UICollectionViewCell new];
return cell;

答案 1 :(得分:0)

尝试使用集合视图单元格的出列可重用性:

- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell * cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    return cell;
}