在处理UICollectionView
我的应用程序中的 a 时,我遇到了一个与重新加载数据相关的奇怪问题。经过大量调试和分析日志后,我得出的结论是,如果reloadData
紧随其后,肯定insertItemsAtIndexPaths
会发生以下可怕的错误:
名称:
NSInternalInconsistencyException
原因:无效更新:第 0 节中的项目数无效。更新后现有节中包含的项目数 (1) 必须等于更新前该节中包含的项目数 (1),加上或减去从该部分插入或删除的项目数(1 个插入)...
他们唯一能让这种情况持续发生的方法是,当呼叫到达时,内部UICollectionView
仍然很忙。" " 在完成之前连续调用两次的事实似乎支持了这一点,因为在调用其他情况下,该方法从不连续调用两次。reloadData
insertItemsAtIndexPaths
collectionView:numberOfItemsInSection
insertItemsAtIndexPaths
有没有人看到过类似的行为,或者可以确认我的分析,甚至提出适当的解决方法?
更新:是的,我确保所有相关调用都发生在主线程上。
更新 2:由于出现这种情况的原因一直受到质疑:我正在使用 Monotouch 并且有问题的代码旨在保持通用 .Net Collections将此事件触发到适当的调用中,以保持 UICollectionView 绑定到集合同步中。当源集合被清除时,它会响应重置操作,然后在将项目插入其中时执行一个或多个添加操作,这会导致上述问题。希望这可以帮助。