如果在重新加载期间触摸了单元格,则在重新加载后无法选择UICollectionView单元格

时间:2014-05-29 18:29:07

标签: ios objective-c uicollectionview uicollectionviewcell

我使用UICollectionView来显示与服务器相关的信息。此UICollectionView允许单元格选择显示一些嵌套数据。不幸的是,如果用户在我的应用调用[collectionView reloadData]期间触摸并保留任何单元格,则此单元格不再对触摸作出反应(collectionView:didSelectItemAtIndexPath:方法未被调用)。 我可以选择除此之外的任何细胞。

我创建了可以重现此问题的简单应用程序:link

任何想法如何解决?

2 个答案:

答案 0 :(得分:17)

看起来像一个错误(我相信有一个类似的问题,cell.selected = YES没有-selectItemAtIndexPath:animated:scrollPosition:会导致无法取消选择单元格。

但是如果你这样做:

[self.collectionView reloadItemsAtIndexPaths:[self.collectionView indexPathsForVisibleItems]];

而不是[self.collectionView reloadData]它正在按预期工作。

更新:找到the answer of the issue mentioned above

另一个更新:看来这确实是一个错误。在iOS8模拟器上测试了原始项目,现在问题已解决。

答案 1 :(得分:2)

根据 @ Alladinian' 答案说,不是使用[self.collectionView reloadData],而是使用self.collectionView reloadItemsAtIndexPaths:.....在您的演示中工作,我也尝试过使用

[self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];

它也运作正常。