在 controllerDidChangeContent 之后隐藏的 UICollectionView 单元格

UICollectionView cells hidden after controllerDidChangeContent

我有一个 UICollectionView,其 dataSourceNSFetchedResultsController 支持。

单元格有时会在内容更改后隐藏。它们保留为集合视图的子视图,但是 isHidden == true。 None 我的代码明确隐藏了单元格,并且 isHidden 的 属性 观察者永远不会被触发。

提示:我们的代码确实有一个紧急情况,它可以修改 cellForItem...willDisplayCell

中的核心数据

问题在于,有时我们会尝试构建被请求的单元格,但在返回单元格的后备版本之前会失败并修改 CoreData。

cellForItemwillDisplayCell在主线程上运行,而我们使用performWithBlockAndWait修改CoreData。

当集合视图仍在更新单元格时,这导致主线程上的集合视图 dataSource 发生更改。

简单的解决方法是使用 performWithBlock 而不是 performWithBlockAndWait。现在集合视图有机会在数据模型更改之前完成自身更新。

更好的解决方法是在我们到达 cellForItemwillDisplayCell.

时使此类故障不可能发生