【问题标题】:Assertion failure in UICollectionView when trying to reload data尝试重新加载数据时 UICollectionView 中的断言失败
【发布时间】:2014-09-05 10:06:23
【问题描述】:

我得到一个错误:

    Assertion failure in -[UICollectionViewData numberOfItemsBeforeSection:],/SourceCache/UIKit_Sim/UIKit-2935.137/UICollectionViewData.m


    Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for number of items before section 2 when there are only 1 sections in the collection view'

当我尝试重新加载集合视图时。添加新部分时它可以工作,但是当我尝试删除它们时会引发异常。

更新:

 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return object.count;

}

 -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
if([sortString isEqualToString:@"title"])
    return [Obj.ordered allKeys].count;
else
    return 1;

}

【问题讨论】:

  • 您必须向我们展示数据源委托方法,以便我们查看错误所在。
  • 将代表添加为更新。

标签: ios xcode ios7 uicollectionview


【解决方案1】:

删除行或部分之前,您必须从 数据源 数组中删除项目。如果您的方法在删除部分之前返回1,那么在删除后应该返回0

【讨论】:

  • 但是在重新加载collectionview时我认为它将由app ryt处理?
  • 重新加载集合视图只是重新加载 UI。您必须注意数据源。您正在做的是告诉集合视图绘制 2 个部分,然后她要求数据源为第 2 部分提供她的东西,数据源说 - 好吧,我没有它并崩溃。
  • 所以我必须在重新加载之前删除这些部分?
  • 从您的数据源中删除项目。然后重新加载集合视图。 numberOfSectionsInCollectionView 方法应该在删除部分之前返回 1,在删除部分之后返回 0
  • 我所做的是使数据源为零加载新数据,然后重新加载集合视图。然后检查委托 numberOfSectionsInCollectionView 它返回 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 2012-09-17
  • 2017-01-13
  • 1970-01-01
相关资源
最近更新 更多