如果集合视图嵌入到 ios 的表视图中,如何始终显示集合视图的第一项

Posted

技术标签:

【中文标题】如果集合视图嵌入到 ios 的表视图中,如何始终显示集合视图的第一项【英文标题】:How to always display 1st item of collection view, if collection view is embedded in table view in ios 【发布时间】:2016-11-08 13:44:59 【问题描述】:

我有一个表格视图,在表格视图的自定义单元格中我有一个集合视图。 集合视图具有多个图像的水平滚动。 在表格视图的第一个单元格上,我从集合视图中滚动了 3 到 4 个图像,这意味着我在表格视图的第一行和集合视图的第四个图像上,水平滚动。 现在,当我转到或向下滚动表视图到第 5 行时,集合视图直接将我带到我之前在集合视图中滚动的索引处的图像。每次滚动表格视图时,我都应该位于集合视图的第一个索引处。

【问题讨论】:

在 tableViewCell 中,覆盖:prepareForReuse() 并重新加载 collectionView 或将其滚动到位置 0。 【参考方案1】:

在表格视图的 willDisplayCell 方法中使用它。

让点 = CGPoint(x: 0, y: 0)

tableViewCell.collectionView.setContentOffset(point, animated: true)

【讨论】:

【参考方案2】:

在自定义TableView 单元格中使用prepareForReuse() 方法并重置UICollectionView 滚动。

注意:这种方法可以使用,但滚动插入总是会被重置。因此,在您的示例中,如果您向下滚动然后返回到第一个单元格,则它不会显示第四张图像,而是显示第一张图像。如果您想获得更好的解决方案,请创建一个 double 数组以记住内部 UICollectionViews 单元格 contentInsets,然后在 prepareForReuse 方法中使用这些值在 UICollectionView 上设置右滚动。这种方法在内存使用方面可能会很昂贵。

【讨论】:

以上是关于如果集合视图嵌入到 ios 的表视图中,如何始终显示集合视图的第一项的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 - 无法在滚动视图中嵌入屏幕

如何在iOS中的表视图底部创建固定单元格?

如何在 iOS 中可见集合视图的末尾添加“添加”按钮

如何确保物化视图始终是最新的?

从嵌入在 UIScrollView 中的表中推送视图控制器

在 iOS 10 中使用标签栏控制器时,集合视图的高度计算错误