在 controllerDidChangeContent 之后隐藏的 UICollectionView 单元格
UICollectionView cells hidden after controllerDidChangeContent
我有一个 UICollectionView
,其 dataSource
由 NSFetchedResultsController
支持。
单元格有时会在内容更改后隐藏。它们保留为集合视图的子视图,但是 isHidden == true
。 None 我的代码明确隐藏了单元格,并且 isHidden
的 属性 观察者永远不会被触发。
提示:我们的代码确实有一个紧急情况,它可以修改 cellForItem...
或 willDisplayCell
中的核心数据
问题在于,有时我们会尝试构建被请求的单元格,但在返回单元格的后备版本之前会失败并修改 CoreData。
cellForItem
或willDisplayCell
在主线程上运行,而我们使用performWithBlockAndWait
修改CoreData。
当集合视图仍在更新单元格时,这导致主线程上的集合视图 dataSource
发生更改。
简单的解决方法是使用 performWithBlock
而不是 performWithBlockAndWait
。现在集合视图有机会在数据模型更改之前完成自身更新。
更好的解决方法是在我们到达 cellForItem
或 willDisplayCell
.
时使此类故障不可能发生
我有一个 UICollectionView
,其 dataSource
由 NSFetchedResultsController
支持。
单元格有时会在内容更改后隐藏。它们保留为集合视图的子视图,但是 isHidden == true
。 None 我的代码明确隐藏了单元格,并且 isHidden
的 属性 观察者永远不会被触发。
提示:我们的代码确实有一个紧急情况,它可以修改 cellForItem...
或 willDisplayCell
问题在于,有时我们会尝试构建被请求的单元格,但在返回单元格的后备版本之前会失败并修改 CoreData。
cellForItem
或willDisplayCell
在主线程上运行,而我们使用performWithBlockAndWait
修改CoreData。
当集合视图仍在更新单元格时,这导致主线程上的集合视图 dataSource
发生更改。
简单的解决方法是使用 performWithBlock
而不是 performWithBlockAndWait
。现在集合视图有机会在数据模型更改之前完成自身更新。
更好的解决方法是在我们到达 cellForItem
或 willDisplayCell
.