具有多选的UICollectionView不会选择十几个项目

Luk*_*uke 7 ios ios6 uicollectionview uicollectionviewcell

当使用UICollectionViewallowsMultipleSelection设置为YES只有十几个人的项目是可选的.UICollectionViewDelegate停止打电话collectionView:didSelectItemAtIndexPath:.

看起来很随意.您可以选择一些项目,向下滚动,再选择一些项目,在某些时候您无法再选择任何项目.

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

Luk*_*uke 16

我发现虽然我之前的回答有效,但可能是因为没有调用super.虽然文档UICollectionReusableView没有提到这一点,但是UITableViewCell具有相同方法的文档可以做到.

- (void)prepareForReuse
{
    [super prepareForReuse]
    // Your code here.
}
Run Code Online (Sandbox Code Playgroud)

旧答案:


这可能是一个错误UICollectionView.

发生的事情是先前选择的单元格正在被重用并保持选定的状态.集合视图未设置selected为"NO".

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

- (void)prepareForReuse
{
    self.selected = NO;
}
Run Code Online (Sandbox Code Playgroud)

如果选择了重用单元格,则selectedprepareForReuse调用后集合视图将设置为"YES" .

这是UICollectionView应该自己做的事情.谢天谢地,解决方案很简单.不幸的是,我通过跟踪自己的选择状态花了很多时间来解决这个bug.我没有意识到为什么会发生这种情况,直到我开始研究另一个细胞较小的项目.