2013-03-04 71 views
9

集合视图由单行,水平排列的单元格组成,其大小与集合视图的边界大小相同,单个单元格填充整个屏幕。处理触摸的UICollectionView内的UITableView。

问题是收集视图似乎拦截所有的锅。我如何将它们转发到桌面,以便我也可以垂直滚动桌面。

我想垂直平移传递到单元格内的表,所以它可以上下滚动。我希望水平锅被传送到收集视图,所以它可以水平滚动。

任何想法?谢谢。用故事板

+0

使用storyBoard,尝试将tableView作为自身的子视图放在collectionViewCell.collectionView中。查看 – 2013-03-04 01:07:30

+0

集合视图已经是视图的子视图。表视图被插入到集合视图的原型单元中,因此在运行时它的in,cell.contentView。水龙头传递到表格,我可以看到里面的单元格被选中。 – foFox 2013-03-04 01:10:26

+0

是的,将tableView拖入单元格square(cell.contenView)。显示一些代码。 – 2013-03-04 01:11:28

回答

14

对于里面的CollectionView的UITableView,请按照下列步骤操作:

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

- 创建单元格:CollectionViewCell类。在storyBoard中为Cell选择Cell类,指定重用ID。

-Drag tableView里面collectionCell广场。代表,数据源也拖到CollecionCell Square。添加tableView数据源,委托Cell.m内部

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

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

+0

所以是的工作,我忘了提及,我使用自定义布局,这是UICollectionViewFlowLayout的子类。这似乎是所有问题的根源。 – foFox 2013-03-04 03:55:40

+1

忘记加入:非常感谢。 – foFox 2013-03-04 04:02:16

+0

嗨在代码中,如果我增加集合视图中单元格的数量。在收集视图的第三个单元格中显示第一个表格视图,而不是第三个。如何解决它? – souvickcse 2014-10-29 13:21:59

2

Swift2更新 - 我们不需要做所有上述步骤。只需将控制器作为tableview和collection视图的委托和数据源就行了。

0

我已经能够在不使用故事板的情况下完成这项工作 - 尽管我为我的视图使用了XIB,但仅添加了Autolayout规则。所有自定义(颜色,字体,标签等)均在代码中设置。在任何情况下,这也适用于以编程方式构建的单元。

如何做到这一点:

  • 要记住的是,以您的自定义视图添加到细胞不是电池本身内的contentView财产最重要的事情。如果您将XIB用于自定义UICollectionViewCell,请将其留空。实例化您的自定义视图(其中UITableView是),然后将其添加为UICollectionViewCellcontentView的子视图。如果直接在收集视图单元格内添加表格vie,表格视图将不会垂直滚动

  • 落实UICollectionViewDelegateshouldSelectItemAtIndexPathshouldHighlightItemAtIndexPath,使都返回false,使攻上收集观察室不用于内部表格视图水龙头拦截。

用Xcode 7.3完成iOS 9+。

+0

你能分享你的演示吗? – Jason 2017-01-26 05:44:58