尝试重新加载数据时,UICollectionView 中的断言失败

3

我遇到了一个错误:

    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;

}


您需要向我们展示数据源委托方法,以便我们查看错误所在。 - trojanfoe
添加了代理作为更新。 - Anil Santo
1个回答

2

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


但是当重新加载集合视图时,我认为这将由应用程序处理,对吧? - Anil Santo
重新加载集合视图只是重新加载用户界面。您必须注意数据源。您正在做的是告诉集合视图绘制2个部分,然后她要求数据源为第2个部分提供内容,而数据源则说 - 好吧,我没有它并崩溃了。 - Rafał Sroka
那么我需要在重新加载之前删除这些部分吗? - Anil Santo
1
从数据源中删除项目,然后重新加载集合视图。在删除部分之前,“numberOfSectionsInCollectionView”方法应返回“1”,在删除部分之后应返回“0”。 - Rafał Sroka
我所做的是将数据源设置为nil,加载新数据,然后重新加载集合视图。然后检查委托方法numberOfSectionsInCollectionView,它返回1。 - Anil Santo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接