我有UITableView
显示自定义单元格。通过按下按钮,用户可以更改UITableView
情景:
contentOffset.y
)reloadData
在第4步之后,contentOffset.y
的正确新UITableView
应该是什么?我预计它会为0并且我的表滚动到顶部但由于某种原因它不是并且不会滚动回顶部。这是UITableView
的正常行为吗?
答案 0 :(得分:2)
来自Apple的文档...... https://developer.apple.com/reference/uikit/uitableview/1614862-reloaddata
为了提高效率,表视图仅重新显示那些行 可见。如果表因此而缩小,它会调整偏移量 重装。
所以,是的,不在reloadData上一直滚动到顶部是正常的。
如果想要它滚动到顶部,请使用content insert --uri content://com.test/x --bind column_name:s:new_value
或:
setContentOffset
答案 1 :(得分:1)
是的,这是UITableView的正常行为。如果您希望在重新加载后该表视图应滚动到顶部,则必须使用以下代码执行此操作。
let newOffset = CGPoint(x: currentOffset.x, y: 0)
tableView.setContentOffset(newOffset, animated: false)
自动调用reloadData函数时,UITableView会保留它的滚动偏移量。