切换选项卡时,我需要导航到表格视图的顶部。
func scrollToFirstRow() {
if let rowCount = self.dataSource?.tableView(self,numberOfRowsInSection: 0), rowCount > 0 {
let indexPath = IndexPath(row: 0, section: 0)
self.scrollToRow(at: indexPath, at: .top, animated: true)
self.setContentOffset(CGPoint(x: 0, y: 10), animated: true)
}
}
使用Xcode 10.1 和 iOS11,我在使用上述代码切换选项卡时导航到顶部。
但是tableview
没有滚动到iOS 13和Xcode 11.3 Beta的顶部
只需调用此方法:
self.chatTable.setContentOffset(CGPointZero, animated:true)
或
self.chatTable.setContentOffset(.zero, animated:true)
将indexPath 值指定为第 0 行和第 0 节。这在iOS 13中对我来说效果很好
self.chatTable.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
更新:
您需要在表视图完成加载后调用它。以下是检查加载结束的方法:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if let lastVisibleIndexPath = tableView.indexPathsForVisibleRows?.last {
if indexPath == lastVisibleIndexPath {
// call your scrollToFirstRow function here
}
}
}
同样在你的视图中,只需调用tableView.reloadData((
通过在 DispatchQueue 上调用 scrollToFirstRow(( 来解决