collectionView:didSelectItemAtIndexPath:没有被调用

Posted

技术标签:

【中文标题】collectionView:didSelectItemAtIndexPath:没有被调用【英文标题】:collectionView: didSelectItemAtIndexPath: does not get called 【发布时间】:2014-05-15 20:37:28 【问题描述】:

我有一个UITableviewUITableViewCell's 之一是 UICollectionview,实例名称为“amenityView”。 UICollectionViewDelegateUICollectionViewDataSourcestoryboard 中设置如下所示。调用以下方法并按预期填充数据。

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
- (UICollectionViewCell *)collectionView:(UICollectionView *)collection cellForItemAtIndexPath:(NSIndexPath *)indexPath

但是,当我选择 UICollectionView 中包含的 UICollectionViewCell 时,没有调用以下方法。我错过了什么?

-(void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
-(void) collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

更新: 在此方法中返回 YES collectionView:shouldSelectItemAtIndexPath: 将调用以下两个方法。至少那是我所缺少的。希望这会帮助一些身体...

【问题讨论】:

是".allowsSelection" 你的收藏视图设置为YES? @MichaelDautermann。感谢您的答复。 “.allowsSelection”设置为“YES”。 它所在的表格视图单元格是否允许用户交互或选择单元格本身? UICollectionView 小于表格视图单元格。当我选择UICollectionView 之外但在表格视图单元格内的区域时,方法didSelectRowAtIndexPath 被调用。所以是的,单元格的选择是有效的。 【参考方案1】:

表视图的 didSelectRowAtIndexPath 是否被调用?如果是这样,表格视图可能会拦截触摸而不是将它们传递给内部的集合视图。我从未完成您尝试执行的解决方案,但集合视图位于滚动视图内,并且以有意义的方式将触摸信息传递给集合视图可能并不容易,因此您可能需要禁用点击表格视图单元格,以便集合视图响应触摸。

【讨论】:

以上是关于collectionView:didSelectItemAtIndexPath:没有被调用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 CollectionView 单元格内部其他 collectionView 的大小错误?

CollectionView 单元格出现在 collectionView 之外。

CollectionView 里面的 CollectionView | CollectionViewCell 自动布局错误

当collectionView折叠时隐藏collectionView内容

一个 tableView 单元中的两个 collectionView。 collectionViews 没有出现

普通 CollectionView 单元格中的动态 CollectionView 单元格