我的UIScrollView
中有一些UITableView
。
我的问题是,如果我将第一个单元格中的滚动视图滚动到另一个位置,那么第四个单元格也将处于同一位置。
第二个和第五个,第三个和第六个相同......
单元格中的滚动视图是否有办法保持其位置?
答案 0 :(得分:2)
您应该在数组中保存UIScrollView
s的实际内容偏移量,在自定义委托中发生滚动后检索该值,并将偏移量设置为cellForRowAt
中保存的值。
<强> CustomCell.swift 强>
weak var delegate: CellScrollViewDelegate?
let scrollView: UIScrollView!
var contentOffset: CGPoint!
func setUpCell() {
scrollView.delegate = self
scrollView.contentOffset = savedContentOffset
}
[...]
func scrollViewDidScroll(_ scrollView: UIScrollView) {
delegate?.horizontalCellDidScroll(indexPath: indexPath, contentOffset: scrollView.contentOffset)
}
<强> TableViewController.swift 强>
var cellScrollContentOffsets = [[CGPoint]]()
func horizontalCellDidScroll(indexPath: IndexPath, contentOffset: CGPoint) {
cellScrollContentOffsets[indexPath.section][indexPath.row] = contentOffset
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath)
cell.delegate = self
cell.savedContentOffset = cellScrollContentOffsets[indexPath.section][indexPath.row]
cell.setUpCell()
return cell
}
<强> Delegate.swift 强>
protocol CellScrollViewDelegate: class {
func horizontalCellDidScroll(indexPath: IndexPath, contentOffset: CGPoint)
}