具有多选的UICollectionView不会选择十几个项目
当使用UICollectionView
并将allowsMultipleSelection
设置为YES时,只能选择十几个项目。 UICollectionViewDelegate
停止调用collectionView:didSelectItemAtIndexPath:
.
这看起来很随意。 您可以选择一些项目,向下滚动,再选择一些项目,在某些时候您无法再选择任何项目。
当单元格较小时,您似乎可以选择更多项目。 单元格越大,在停止工作之前您可以选择的项目越少。
我发现虽然我之前的回答有效,但可能是因为没有调用super。 虽然UICollectionReusableView
的文档没有提到这一点,但UITableViewCell
的文档具有相同的方法。
- (void)prepareForReuse { [super prepareForReuse] // Your code here. }
旧答案:
这可能是UICollectionView
的错误。
发生的事情是先前选择的单元格正在被重用并保持选定的状态。 集合视图未设置为“否”。
解决方案是重置prepareForReuse
中的选定状态:
- (void)prepareForReuse { self.selected = NO; }
如果选择了重用单元格,则在调用prepareForReuse
后,集合视图将设置为“YES”。
这是UICollectionView
应该自己做的事情。 谢天谢地,解决方案很简单。 不幸的是,通过跟踪我自己的选择状态,我花了很多时间来解决这个bug。 我没有意识到为什么会发生这种情况,直到我开始研究另一个细胞较小的项目。