UICollectionView didSelecteItem 委托行为怪异

Posted

技术标签:

【中文标题】UICollectionView didSelecteItem 委托行为怪异【英文标题】:UICollectionView didSelecteItem Delegate behaving weirdly 【发布时间】:2017-07-28 10:44:14 【问题描述】:

我有一个UICollectionView 来显示一些组件。 它的垂直滚动并且只有 1 列。

我在 collectionView 的数据源的不同部分添加了 2 个相同但具有不同数据的对象。

在我的cell 类中,我的初始化和更新方法如下

- (void)commonInitializer 

    self.backgroundColor = kVTColorWhite;

    self.imageView = [[VTUIKit imageSquareXL2] addToSuperview:self];
    self.imageView.f_x = kVTPadding;
    self.imageView.backgroundColor = kVTColorBackground;
    self.imageView.f_width = [VTAdSpaceDisplayCell cellSize].width - 2*kVTPadding;
    self.imageView.f_height = [VTUIKit screenWidth]/3.125;
    self.imageView.layer.cornerRadius = 2.0;
    self.imageView.layer.masksToBounds = YES;



- (void)updateWithModel:(id)model

    self.model = model;

    if (self.model.image == nil) 
        [self updateEmptyCells];
    
    else
        [self.imageView setImageWithUrl:self.model.image optimizedForSize:[self class] cellSize] withPlaceholder:[UIImage imageNamed:@"Placeholder-Image"]];
    

但是 collectionViewdidSelectItemAtIndexPath 有时会被调用,有时不会被调用,这很奇怪。

我还将collectionView 的代表设置为当前班级,我也没有将任何gesture recogniser 添加到单元格或collectionView

但行为仍然很奇怪且非常随机,我什至无法调试特定场景。

任何帮助将不胜感激。

谢谢

【问题讨论】:

你的问题可能在很多不同的地方,你能从集合视图中显示更多代码吗?比如重新加载数据的方式和时间,以及如何初始化这些项目。 将其添加到您的 imageView 有什么不同:self.imageView.userInteractionEnabled = true; 其实这个问题很奇怪,我找不到这个问题发生的原因,我会在这里发布它作为答案。谢谢 【参考方案1】:

实际问题与UIImageViewUICollectionViewCell 无关。

之前我使用[self.collectionView reloadSections:[INDEX]] 重新加载collectionView 的部分,这造成了一些问题,我不知道为什么。

但是,我将它们更改为[self.collectionView reloadData],问题就消失了。

出现问题的原因非常奇怪和奇怪,即使我搜索了它也没有任何解释。

无论如何,我的问题已得到解决,因此如果将来对任何人有帮助,我会将我的解决方案作为答案发布。

谢谢

【讨论】:

以上是关于UICollectionView didSelecteItem 委托行为怪异的主要内容,如果未能解决你的问题,请参考以下文章

使用 didSelectRowAtIndexPath 进行转场

Swift UITableView didSelectRowAtIndexPath 错误

折叠UICollectionView

-[UICollectionView _endItemAnimations] 中的 UICollectionView 断言失败

如何滚动另一个 UICollectionView 下方的 UICollectionView?

UICollectionView 单元内部已加载,但 UICollectionView 未显示