【问题标题】:UICollectionView with multi-select won't select more than a dozen of items带有多选的 UICollectionView 不会选择十几个项目
【发布时间】:2012-11-25 23:00:07
【问题描述】:

当使用UICollectionView 并将allowsMultipleSelection 设置为YES 时,只有十几个项目可供选择。 UICollectionViewDelegate 停止调用 collectionView:didSelectItemAtIndexPath:

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

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

【问题讨论】:

    标签: ios ios6 uicollectionview uicollectionviewcell


    【解决方案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 的文档确实提到了这一点。这可能只是一个文档问题。
    猜你喜欢
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多