7

当使用UICollectionView设置allowsMultipleSelection为 YES 时,只有十几个项目是可选的。UICollectionViewDelegate停止呼叫collectionView:didSelectItemAtIndexPath:

看起来很随意。您可以选择一些项目,向下滚动,选择更多,在某些时候您无法选择更多项目。

当单元格较小时,您似乎可以选择更多项目。单元格越大,在它停止工作之前您可以选择的项目就越少。

4

1 回答 1

16

我发现虽然我之前的答案有效,但可能是由于没有调用 super. 虽然 的文档UICollectionReusableView没有提到这一点,UITableViewCell但具有相同方法的 的文档却提到了这一点。

- (void)prepareForReuse
{
    [super prepareForReuse]
    // Your code here.
}

老答案:


这可能是UICollectionView.

发生的情况是先前选择的单元格正在被重用并保持选定状态。集合视图未设置selected为“否”。

解决方案是重置prepareForReuse单元格的选定状态:

- (void)prepareForReuse
{
    self.selected = NO;
}

如果选择了重用单元格,则集合视图在调用后将设置selected为“YES” prepareForReuse

这是UICollectionView应该自己做的事情。幸运的是,解决方案很简单。不幸的是,我花了很多时间通过跟踪我自己的选择状态来解决这个错误。直到我在另一个具有较小单元的项目上工作时,我才意识到为什么会发生这种情况。

于 2012-11-25T23:00:07.047 回答