我有这个集合视图,我想添加SVPullToRefresh的无限滚动功能。
集合视图设置为1个部分和n
(变量)单元格。
我加入了这个功能:
__weak MyClass *weakSelf = self;
[_collection addInfiniteScrollingWithActionHandler:^ {
[weakSelf loadNextPage];
}];
集合视图完全按照预期显示。在iOS 6上,方法-loadNextPage
被正常调用,应用程序运行没有问题。另一方面,在iOS 7上,当VC即将调用该方法时,应用程序崩溃并出现以下错误:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UICollectionView recieved layout attributes for a cell with an index path that does not exist: <NSIndexPath: 0x1ca8fc50> {length = 2, path = 1 - 0}'
我一直试图找到这段代码的确切内容,或者代码流中出现异常的部分,但我找不到它。
编辑添加了一些代码:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
ProductCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
Product *product = [_productList objectAtIndex:[indexPath row]];
[cell setName:[product name]];
[cell setImage:[product imageURL]];
[cell setPrice:[product formattedPrice]];
[cell setDistance:[product formattedDistance]];
return cell;
}
答案 0 :(得分:0)
尝试
- (NSInteger)numberOfItemsInSection:(NSInteger)section {
[_collection.collectionViewLayout invalidateLayout]
}
我们在这里做的是,当我们有更多数据要渲染时,我们使当前集合视图布局无效,因为它不能用于新数据,集合视图将使用新的可用数据进行布局。