createPreparedCellForItemAtIndexPath 中的 UICollectionView 断言失败
Posted
技术标签:
【中文标题】createPreparedCellForItemAtIndexPath 中的 UICollectionView 断言失败【英文标题】:UICollectionView Assertion failure in createPreparedCellForItemAtIndexPath 【发布时间】:2017-08-08 09:53:28 【问题描述】:我的代码很简单,就是想创建一个流式布局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
【问题讨论】:
你正在使用storyboard或xib?? @ShabbirAhmad 两者都没有,只有代码 只需将单元格从队列中取出: UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 【参考方案1】:尝试使用集合视图单元的出队可重用性:
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
UICollectionViewCell * cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
return cell;
【讨论】:
【参考方案2】:如文档所述
集合视图要求您始终将视图出列,而不是在代码中显式创建它们
这与 UITableView 不同,只是一直对单元格进行 deque
错误:
UICollectionViewCell *cell = [UICollectionViewCell new];
return cell;
【讨论】:
以上是关于createPreparedCellForItemAtIndexPath 中的 UICollectionView 断言失败的主要内容,如果未能解决你的问题,请参考以下文章