问题在于集合视图似乎拦截了所有手势。如何将它们转发到表格,以便我也可以垂直滚动表格。
我希望将垂直手势传递给单元格内的表格,以便它可以上下滚动。我希望将水平手势传递给集合视图,以便它可以水平滚动。
有什么想法吗?谢谢。
对于在storyBoard中使用的CollectionView内部的UITableView,请按照以下步骤操作:
- 将CollectionView拖到UIViewController中,将数据源拖到UIViewController中(不要拖动代理)。将数据源方法添加到ViewController.m中
- 创建Cell:CollectionViewCell类。在storyBoard中为单元格选择类以及指定重用ID。
- 在CollectionCell方框中拖动tableView。同样将委托和数据源拖动到CollecionCell Square中。在Cell.m中添加tableView数据源和委托。
- 当实现tableViewDidSelect时,请创建CellDelegate。将此代理传递给UIViewController以执行其他操作
示例代码: https://github.com/lequysang/github_zip/blob/master/TableViewInCollection.zip
Swift2 更新 - 我们不需要执行上述所有步骤。只需将控制器作为表视图和集合视图的代理和数据源即可。
我已经能够实现这个功能而不使用故事板--虽然,我使用XIB来为我的视图添加自动布局规则。所有的自定义(颜色、字体、标签等)都是在代码中设置的。无论如何,这也适用于以编程方式构建的单元格。
如何做到:
最重要的是要记住将自定义视图添加到单元格的contentView
属性中,而不是单独放在单元格里面。如果您正在为自定义UICollectionViewCell
使用XIB,请将其保留为空白。在自定义视图中实例化(即UITableView
所在处),然后将其作为子视图添加到UICollectionViewCell
的contentView
中。如果您直接将表视图放在集合视图单元格内,表视图将无法垂直滚动。
实现UICollectionViewDelegate
的shouldSelectItemAtIndexPath
和shouldHighlightItemAtIndexPath
方法,并将两者都返回false
,以便点击集合视图单元格时不会与打算用于表视图内部的触控相冲突。
使用Xcode 7.3完成,适用于iOS 9及以上版本。