我有两个 View Controller A 和 B。ViewControllerA 上有一个 UICollectionView。
如果我将 ViewControllerB 推到 ViewControllerA 上,那么在后台 ViewControllerA 的 UICollectionView 更新中,我想强制 Collection View 重绘并将其单元格出列,以便当我从 ViewControllerB 返回时,ViewControllerA 的数据是最新且正确的。如果 Collection View 在后台,调用 reloadData 不会使 Collection View 重绘它自己,它会等到 viewWillAppear 触发之后
[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes]
,这是调用数据源以使新单元格出队的方法。
无论如何要强制或欺骗collectionview,以便它在调用viewWillAppear之前在新单元格上调用[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes]
?
我正在尝试让自定义 View Controller 转换正常工作,如果在查看 ViewControllerB 时 ViewControllerA 中的数据发生了变化,那么看起来很奇怪。我想强制 collectionView 更新,因此当我调用 CollectionView.visibileIndexPaths 时,会返回正确的项目,并且我的动画看起来会正确。
最佳答案
在再次对其进行动画处理之前,在 ViewControllerA 的 View 上调用 layoutIfNeeded 会强制 collectionView 在 ViewControllerA 返回屏幕之前进行更新。
关于ios - 强制更新离屏 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564892/