【问题标题】:UITableView inside UICollectionView handling touches.UICollectionView 内的 UITableView 处理触摸。
【发布时间】:2013-03-04 01:00:58
【问题描述】:

集合视图由单行水平对齐的单元格组成,其大小与集合视图的边界大小相同,单个单元格填满整个屏幕。

问题是集合视图似乎拦截了所有的平底锅。如何将它们转发到表格,以便我也可以垂直滚动表格。

我希望将垂直平移传送到单元格内的表格,以便它可以上下滚动。我希望将水平平移传送到集合视图,以便它可以水平滚动。

有什么想法吗?谢谢。

【问题讨论】:

  • 使用storyBoard,尝试将tableView放入collectionViewCell.collectionView作为self.view的子视图
  • 集合视图已经是视图的子视图。表格视图被插入到集合视图的原型单元格中,因此在运行时它位于 cell.contentView 中。水龙头确实会送到桌子上,我可以看到里面的单元格被选中。
  • 是的,将tableView拖入单元格正方形(cell.contenView)。显示一些代码。
  • 是的,这就是我已经拥有的。似乎没有办法。真的没有代码。我只是做"return collectionView dequeueReusableCellWithReuseIdentifier:@"sample" forIndexPath:indexPath]"
  • 不要忘记委托,tableView 的数据源。尝试显示一些 tableCell 并进行测试。

标签: ios uitableview uicollectionview


【解决方案1】:

对于使用storyBoard的CollectionView中的UITableView,请按照以下步骤操作:

-将 CollectionView 拖到 UIViewController,将数据源拖到 UIViewController(不要拖委托)。在 ViewController.m 中添加数据源方法

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

-将tableView拖到collectionCell正方形内。委托,数据源也拖到 CollecionCell Square。添加tableView数据源,在Cell.m中委托

-在其中实现 tableViewDidSelect 时创建 CellDelegate。将此委托传递给 UIViewController 以执行其他操作

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

【讨论】:

  • 是的,这行得通,我忘了说,我使用的是自定义布局,它是 UICollectionViewFlowLayout 的子类。它似乎是所有问题的根源。
  • 忘记添加:非常感谢。
  • 嗨,如果我在集合视图中增加单元格的数量,则在代码中。在集合视图的第三个单元格中,它显示的是第一个表视图,而不是第三个。如何解决?
【解决方案2】:

Swift2 更新 - 我们不需要执行上述所有步骤。只需让控制器成为 tableview 和 collection view 的委托和数据源就可以了。

【讨论】:

    【解决方案3】:

    我已经能够在不使用情节提要的情况下完成这项工作——尽管我使用 XIBs 作为我的视图,但只是为了添加自动布局规则。所有自定义(颜色、字体、标签等)都在代码中设置。无论如何,这也应该适用于以编程方式构建的单元格。

    怎么做:

    • 要记住的最重要的事情是将您的自定义视图添加到单元格的contentView 属性,并且不在单元格本身内。如果您将 XIB 用于自定义 UICollectionViewCell,请将其留空。实例化您的自定义视图(UITableView 所在的位置),然后将其添加为UICollectionViewCellcontentView 的子视图。如果直接在集合视图单元格中添加表格视图,表格视图将不会垂直滚动

    • 实现UICollectionViewDelegate 中的shouldSelectItemAtIndexPathshouldHighlightItemAtIndexPath 并使两者都返回false,这样点击集合视图单元格时就不会被用于内部表格视图的点击拦截。

    使用适用于 iOS 9+ 的 Xcode 7.3 完成。

    【讨论】:

    • 你能分享你的演示吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2023-03-18
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多