强制更新屏幕外UICollectionView

时间:2013-12-13 11:01:14

标签: ios objective-c ios7 uikit uicollectionview

我有两个视图控制器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时,会返回正确的项目并且我的动画看起来是正确的。

1 个答案:

答案 0 :(得分:5)

在动画调用之前调用ViewControllerA视图上的layoutIfNeeded会强制在ViewControllerA返回屏幕之前更新collectionView。