我有一个UITableView
,其中每个单元格包含一个UICollectionView
。
我可以垂直滚动UITableView
,也可以水平滚动嵌套的UICollectionView
,但是我 * 不能 * 在UICollectionView
中选择UICollectionViewCell
。
在UITableView
中禁用选择,而在UICcollectionView
中启用(默认状态)。UICollectionView's
collectionView:didSelectItemAtIndexPath:
根本就不会被调用。
9条答案
按热度按时间r7knjye21#
我能够解决这个问题的方法是在单元格中添加一个点击手势识别器来手动处理点击,而不是依赖于
didSelectRowAtIndexPath
,因为didSelectRowAtIndexPath
不会被调用:雨燕
目标-C
现在,您可以在
cellTapped:
方法中处理被点击的单元格,并且可以获得对通过tapRecognizer.view
点击的单元格的引用。q3qa4bjr2#
我刚刚开始工作所以我想我应该和你们分享我的解决方案。
在为
UITableView
和嵌套的UICollectionView
设置了必要的委托和数据源之后,您可以将UICollectionView
作为第一个可选视图,如下所示这将使
UICollectionView
成为可通过委托选择的第一个对象将使用
UITableView
委托选择视图的任何其他部分希望这有帮助!
fkaflof63#
你在一个定制的
UITableViewCell
中拥有的所有视图都应该相对于contentView
进行布局,所以总是把它们作为一个子视图添加到contentView
中,选择应该起作用。68bkxrlz4#
在视图中控制器
在TableView单元格文件中
在集合视图文件中
4szc88ey5#
我的第一直觉是这两个视图之间的姿势识别器可能是冲突的
更具体地,敲击的UITableViewGR可能阻止UICollectionViewGR接收触摸
kzmpq1sx6#
首先请检查您是否提供了必要的数据源和委托。然后,如果您在特定数量的表格视图单元格上使用集合视图,您可以直接放在原型单元格中。请确保您的单元格具有适当的限制(宽度)
pbwdgjma7#
尝试禁用
tableView
的delaysContentTouches
,并确保集合视图的delegate
设置正确。m2xkgtsf8#
我已经用故事板和编程进行了测试,它正如预期的那样工作。我收到collectionView:didSelectItemAtIndexPath:或者tableView:didSelectRowAtIndexPath取决于点击的区域。看起来,至少在较新的SDK(我的是11. 4)中,它是固定的。
ndasle7k9#
这不应该是一个问题在所有!no自定义手势识别器需要. no需要到禁用这tableview的选择.
请务必:
1.在情节提要或代码中设置tableview并设置其数据源和委托
1.在cellforrowatindexpath中,在使tableviewcell出队之后,获取对相应集合视图的引用,并设置其(集合视图)数据源和委托
1.实现tableviews和collectionviews委托didselect方法,并记录它们的调用以查看其工作情况
我只是实现了一个小的例子项目之前,我写的答案,以确保没有问题。我可以上传它,如果它仍然不为您工作!
祝你好运!