使用UICollectionViewDelegate的奇怪行为

时间:2012-12-12 19:29:07

标签: uiviewcontroller ios6 uicollectionview

我有一个viewController,它包含一个UICollectionView,我在其中实现了两个委托方法shouldSelectItemAtIndexPath和didSelectItemAtIndexPath。 shouldSelect方法按预期工作,并且为每个选定的单元格调用。

即使多次点击,也不会在第一个被点击的单元格上调用didSelect方法。但是,如果您点击第二个单元格,则会调用didSelect方法,但indexPath.item值将用于之前的tapped单元格。

例如,我点击collectionView中的第一个单元格,并调用shouldSelect,其中indexPath.item值= 0.即使对单元格进行多次点击,也不会调用DidSelect。

如果我然后点击任何其他单元格,比如说,例如,collectionView中的第4个单元格,则调用shouldSelect并且其indexPath.item值= 3.还调用didSelect,但它的indexPath.item值= 0(先前选择的单元格)。

如果我继续选择不同的单元格,则继续调用didSelect,但indexPath.item值始终用于先前选定的项目。如果我多次点击一个单元格,则在点击不同的单元格之前,didSelect无法被调用。

任何人?我很难过。所有其他数据源和委托方法似乎都运行正常。委托和数据源在故事板中正确连接。

1 个答案:

答案 0 :(得分:9)

确保你的

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

实际上不是

- (void)collectionView:(UICollectionView *)collectionView didDeSelectItemAtIndexPath:(NSIndexPath *)indexPath

(DidDeSelect vs. DidSelect)

我有同样的问题。