我有两个视图控制器A和B.ViewControllerA上有一个UICollectionView。
如果我将ViewControllerB推送到ViewControllerA,那么在后台ViewControllerA的UICollectionView更新中,我想强制集合视图重绘并使其单元格出列,这样当我从ViewControllerB返回时,ViewControllerA的数据是最新的和正确的。调用reloadData并不会使集合视图重绘它的自我,如果它在后台,它将等到viewWillAppear触发后
[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes]
,这是调用数据源以使新单元出列的方法。
无论如何强制或欺骗集合视图,以便在调用viewWillAppear之前在新单元格上调用[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes]
?
我正在尝试让自定义视图控制器转换工作,如果查看ViewControllerB时ViewControllerA中的数据已更改,则看起来很奇怪。我想强制collectionView更新,所以当我调用CollectionView.visibileIndexPaths时,会返回正确的项目并且我的动画看起来是正确的。
答案 0 :(得分:5)
在动画调用之前调用ViewControllerA视图上的layoutIfNeeded会强制在ViewControllerA返回屏幕之前更新collectionView。