UITableView的内部UICollectionView处理触摸。(UITableView in

2019-08-17 07:31发布

集合视图由一个单一的行中,水平排列的细胞,其尺寸的大小与集合视图的边界相同的,单细胞充满整个屏幕。

问题是,在收集的观点似乎被拦截所有的锅。 我怎样才能将它们转发到表,这样我也可以垂直滚动表。

我想垂直扫视被传递到细胞内的表,所以它可以上下滚动。 我想水平盘被传递到集合视图,因此它可以水平滚动。

有任何想法吗? 谢谢。

Answer 1:

对于使用故事板内的CollectionView的UITableView,请按照下列步骤操作:

-Drag的CollectionView到的UIViewController,拖动的数据源的UIViewController(不拖代表)。 里面添加ViewController.m数据源方法

-create细胞:CollectionViewCell类。 选择单元格中的故事板Cell类类,指定重用ID。

collectionCell正方形内-Drag的tableView。 代表,数据源拖到CollecionCell方太。 添加的tableView数据源,内部委托Cell.m

- 创建CellDelegate在里面实现tableViewDidSelect。 这个转移委托的UIViewController执行其他操作

示例代码: https://github.com/lequysang/github_zip/blob/master/TableViewInCollection.zip



Answer 2:

Swift2更新 - 我们不需要做所有上述步骤。 只是使控制器的委托和的tableview和收集鉴于两者的数据源的工作就好了。



Answer 3:

我已经能够完成这项工作,而无需使用故事板 - 虽然,我用XIBs我的意见,但只增加了自动布局规则。 所有定制(颜色,字体,标签等)在代码中设置。 在任何情况下,这也应该适用于正在编程的方式构建的细胞。

怎么做:

  • 要记住的最重要的事情是您的自定义视图添加到contentView电池的性能 ,而不是电池本身内 。 如果您正在使用自定义XIBs UICollectionViewCell ,留空。 实例化自定义视图(其中UITableView是),然后将其添加为一个子视图UICollectionViewCellcontentView 。 如果您添加表直接争夺集合视图细胞内,表视图不会垂直滚动

  • 实施shouldSelectItemAtIndexPathshouldHighlightItemAtIndexPath的的UICollectionViewDelegate并都返回false ,让攻上收集观察室不用于内部表格视图水龙头拦截。

完成和Xcode 7.3的iOS 9+。



文章来源: UITableView inside UICollectionView handling touches.