如果集合视图嵌入到 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 的表视图中,如何始终显示集合视图的第一项的主要内容,如果未能解决你的问题,请参考以下文章