带有多选的 UICollectionView 不会选择十几个项目
Posted
技术标签:
【中文标题】带有多选的 UICollectionView 不会选择十几个项目【英文标题】:UICollectionView with multi-select won't select more than a dozen of items 【发布时间】:2012-11-25 23:00:07 【问题描述】:当使用UICollectionView
并将allowsMultipleSelection
设置为YES 时,只有十几个项目可供选择。 UICollectionViewDelegate
停止调用 collectionView:didSelectItemAtIndexPath:
。
看起来很随意。您可以选择一些项目、向下滚动、选择更多项目,但在某些时候您无法再选择任何项目。
当单元格较小时,您似乎可以选择更多项目。单元格越大,在它停止工作之前您可以选择的项目就越少。
【问题讨论】:
【参考方案1】:我发现虽然我之前的答案有效,但可能是由于没有调用 super.虽然UICollectionReusableView
的文档没有提及这一点,但具有相同方法的UITableViewCell
的文档却提到了这一点。
- (void)prepareForReuse
[super prepareForReuse]
// Your code here.
旧答案:
这可能是UICollectionView
的错误。
发生的情况是先前选择的单元格正在被重复使用并保持选定状态。集合视图未将 selected
设置为“NO”。
解决方法是重置单元格prepareForReuse
中的选中状态:
- (void)prepareForReuse
self.selected = NO;
如果选择了重用单元格,则在调用prepareForReuse
后,集合视图将selected
设置为“YES”。
这是UICollectionView
应该自己做的事情。幸运的是,解决方案很简单。不幸的是,我花了很多时间通过跟踪我自己的选择状态来解决这个错误。我没有意识到为什么会发生这种情况,直到我正在从事另一个具有较小单元的项目。
【讨论】:
谢谢你,卢克!我同意,这感觉像是一个错误,所以我已经报告了它:openradar.appspot.com/radar?id=2816402 @clozach:我刚刚更新了这个;我认为这可能是由于没有调用 super 造成的。文档没有提到这一点,但UITableViewCell
的prepareForReuse
的文档确实提到了这一点。这可能只是一个文档问题。以上是关于带有多选的 UICollectionView 不会选择十几个项目的主要内容,如果未能解决你的问题,请参考以下文章