表格视图中的多个集合视图同时滚动

时间:2019-01-01 13:40:17

标签: ios swift uitableview uicollectionview

我将集合视图作为tableview的行。集合视图仅支持水平滚动。当我滚动到第一行的集合视图的末尾,然后滚动到tableview的底部。当我什至还没有碰到它时,最后一个集合视图也处于终点位置。

我知道问题出在表视图的 myView.layer.cornerRadius = 10 let shadowPath = UIBezierPath(roundedRect: myView.bounds, cornerRadius: 10) myView.layer.applySketchShadow( color: .black, alpha: 0.5, x: CGFloat(0), y: CGFloat(10), blur: 20, spread: 0) myView.layer.shadowPath = shadowPath.cgPath 上。我尝试使用dequeueReusableCell中的prepareForReuse()

我希望表格视图的任何其他行都应不受其余表格视图行进行的交互影响。

1 个答案:

答案 0 :(得分:0)

您可以使用表视图的委托方法存储(并还原)集合视图的内容偏移量:

var xOffsets: [IndexPath: CGFloat] = [:]

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    xOffsets[indexPath] = (cell as? TableViewCell)?.collectionView.contentOffset.x
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    (cell as? TableViewCell)?.collectionView.contentOffset.x = xOffsets[indexPath] ?? 0
}