带有多选的 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 造成的。文档没有提到这一点,但UITableViewCellprepareForReuse 的文档确实提到了这一点。这可能只是一个文档问题。

以上是关于带有多选的 UICollectionView 不会选择十几个项目的主要内容,如果未能解决你的问题,请参考以下文章

markdown 带有select2多选的Wordpress / Woocommerce自定义字段

macOS 上的 SwiftUI:带有详细视图和多选的列表

Android:支持多选的本地相册

iOS本地照片多选的实现

UICollectionView 多选复用问题

带有插图的 UICollectionView 不会一直向下滚动