CollectionViewController

CollectionViewController

我的应用程序有两个CollectionViewController。在给定的时间只有一个可见。

我在 Storyboard 上创建了以下结构:两个容器 View 彼此重叠。每个容器 View 都嵌入了CollectionViewController。特定容器 View 的可见性确定哪个collectionViewController是可见的。

这就是问题。两个CollectionViewController都并行接收数据,但是iOS存在一个错误,如果一个CollectionViewController尝试在不可见的情况下尝试使用performBatchUpdates执行插入操作,则该错误会使应用程序崩溃。

为了防止这种情况,我在两个CollectionViewController上都创建了BOOL标志,以便他们知道它们是否可见并执行performBatchUpdates。就像是:

if (self.isThisCollectionViewVisible == NO) return;

[self.collectionView performBatchUpdates:^{
   // bla bla... perform insert,m remove...

这解决了部分问题。但是,在以下情况下,该应用程序继续崩溃:如果我点击按钮以切换到不可见的CollectionViewController,则在接收更新时使其可见。

我的意思是:让我们先将A命名为CollectionViewController,然后将B命名为第二个。此时A可见,而B不可见。 B开始接收数据并尝试执行performBatchUpdates,但是由于它不可见,因此if (self.isThisCollectionViewVisible == NO) return;阻止了performBatchUpdates运行,这很好。现在,我使A不可见,使B可见。此时,将标志self.isThisCollectionViewVisible设置为YES,并且performBatchUpdates使应用程序崩溃,并显示以下错误:



我认为CollectionViewController确实尚未准备好并已更新为能够执行performBatchUpdates ...,而这不是以前不更新数据源的问题,因为它正在被更新。

我可以做些什么检查来防止这种情况发生?

注意:我特别注意到有关此崩溃的一些奇怪信息。它表示当崩溃发生时,将插入5个元素并删除2个元素,但实际上正在插入3个元素,删除0个元素,更改2个元素。

最佳答案

对我来说,添加self.collectionView.numberOfItemsInSection(0)可以解决崩溃问题。
在不可见的情况下,在插入项目时collectionView出现问题。

似乎我并不孤单:http://www.openradar.me/15262692

关于ios - 如何解决此CollectionView崩溃?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36334228/

10-11 07:18