UICollectionView 在使用 moveItemAtIndexPath:toIndexPath: 后停止加载单元格。

3

我有一个包含许多项目的UICollectionView,使用UICollectionViewFlowLayout。我想通过用户输入重新排序单元格。

[self.collectionView moveItemAtIndexPath:indexPath toIndexPath:newIndexPath];

执行此代码后,集合视图在滚动时不会更新其内容。它不显示下一个单元格。它甚至不调用cellForItemAtIndexPath:,但其内容大小是正确的(布局“更新”了其状态)。 因此,我们只能看到重新排序之前在集合视图上分配的单元格。 有什么线索可能是问题?是否有任何已知的解决此问题的方法?该应用程序仅适用于iOS 8,并且使用UICollectionViewFlowLayout与集合视图一起使用。
编辑:当我调用[self.collectionView reloadData];时,数据源甚至没有被要求提供任何内容。
1个回答

0
问题出在UICollectionViewCell上。高层次描述是,在移动动画期间,我的代码向单元格发送了一个actionForKey方法。这导致单元格保持在内部的正在动画状态。我找不到合理的解决方法,并重构了一些代码以避免调用actionForKey。现在一切都按预期工作。

请问您能否更详细地解释一下,您在哪里找到了“正在动画”状态?我遇到了类似的问题,即无法加载新单元格(在完全不同但非常复杂的情况下),我想找出是什么原因导致了这个问题... - Matej Vargovčík
1
@MatejVargovčík 老实说,我不记得了。我想这意味着我从我的代码中调用了 actionForKey,并且导致单元格“认为”它正在被动画化。您可以在此处找到有关 actionForKey 的更多信息:https://www.objc.io/issues/12-animations/animating-custom-layer-properties/ - wczekalski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接