SVPullToRefresh与UICollectionView和iOS 7崩溃

时间:2013-12-18 16:24:02

标签: ios ios7 uicollectionview infinite-scroll

我有这个集合视图,我想添加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;
}

1 个答案:

答案 0 :(得分:0)

尝试

- (NSInteger)numberOfItemsInSection:(NSInteger)section {
    [_collection.collectionViewLayout invalidateLayout]
}

我们在这里做的是,当我们有更多数据要渲染时,我们使当前集合视图布局无效,因为它不能用于新数据,集合视图将使用新的可用数据进行布局。