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"]];
但是 collectionView
的 didSelectItemAtIndexPath
有时会被调用,有时不会被调用,这很奇怪。
我还将collectionView
的代表设置为当前班级,我也没有将任何gesture recogniser
添加到单元格或collectionView
。
但行为仍然很奇怪且非常随机,我什至无法调试特定场景。
任何帮助将不胜感激。
谢谢
【问题讨论】:
你的问题可能在很多不同的地方,你能从集合视图中显示更多代码吗?比如重新加载数据的方式和时间,以及如何初始化这些项目。 将其添加到您的 imageView 有什么不同:self.imageView.userInteractionEnabled = true; 其实这个问题很奇怪,我找不到这个问题发生的原因,我会在这里发布它作为答案。谢谢 【参考方案1】:实际问题与UIImageView
或UICollectionViewCell
无关。
之前我使用[self.collectionView reloadSections:[INDEX]]
重新加载collectionView
的部分,这造成了一些问题,我不知道为什么。
但是,我将它们更改为[self.collectionView reloadData]
,问题就消失了。
出现问题的原因非常奇怪和奇怪,即使我搜索了它也没有任何解释。
无论如何,我的问题已得到解决,因此如果将来对任何人有帮助,我会将我的解决方案作为答案发布。
谢谢
【讨论】:
以上是关于UICollectionView didSelecteItem 委托行为怪异的主要内容,如果未能解决你的问题,请参考以下文章
使用 didSelectRowAtIndexPath 进行转场
Swift UITableView didSelectRowAtIndexPath 错误
-[UICollectionView _endItemAnimations] 中的 UICollectionView 断言失败