我有一个带有水平集合视图的单元格的tableview。我有多个具有相同风格的单元格。让我们说索引0&的tableView单元格。 5具有相同的样式(我在dequeueReusableCellWithIdentifier中使用相同的UITableViewCell子类)。
答案 0 :(得分:5)
您可以通过将以下方法添加到自定义单元格类来实现此目的:
public func setScrollPosition(x: CGFloat) {
collection.setContentOffset(CGPoint(x: x >= 0 ? x : 0, y: 0), animated: false)
}
public func getScrollPosition() -> CGFloat {
return collection.contentOffset.x
}
以下表格中的数据源类:
var offsets = [IndexPath:CGFloat]()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.setScrollPosition(x: offsets[indexPath] ?? 0)
return cell
}
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
offsets[indexPath] = collectionCell.getScrollPosition()
}
答案 1 :(得分:0)
您可以设置单元格以确认UIScrollViewDelegate并实现scrollViewDidEndDecelerating方法以保存滚动偏移,然后使用该偏移量在您的UITableView的cellForRowAtIndexPath中出列单元格时恢复原始偏移。