在表格视图中,我必须滚动到顶部。但我不能保证第一个对象是section 0,第0行。可能我的表视图将从第5节开始。
所以当我调用:
[mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
有其他方法滚动到表视图的顶部吗?
在表格视图中,我必须滚动到顶部。但我不能保证第一个对象是section 0,第0行。可能我的表视图将从第5节开始。
所以当我调用:
[mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
有其他方法滚动到表视图的顶部吗?
当前回答
我发现强迫UITableViewController在iPhone、iPad和macCatalyst (macOS)下滚动到顶部的最简单方法如下:
准备返回0从[tableView:numberOfRowsInSection:] 电话(自我。tableView reloadData] 电话(自我。tableView layoutIfNeeded] 准备从[tableView:numberOfRowsInSection:]中返回实际的行数 电话(自我。tableView reloadData]
其他回答
这是代码ScrollTableView到顶部编程
迅速:
self.TableView.setContentOffset(CGPointMake(0, 1), animated:true)
我更喜欢下面的,因为它考虑到一个插图。如果没有插入,它仍然会滚动到顶部,因为插入将是0。
tableView.setContentOffset(CGPoint(x: 0, y: -tableView.contentInset.top), animated: true)
我发现强迫UITableViewController在iPhone、iPad和macCatalyst (macOS)下滚动到顶部的最简单方法如下:
准备返回0从[tableView:numberOfRowsInSection:] 电话(自我。tableView reloadData] 电话(自我。tableView layoutIfNeeded] 准备从[tableView:numberOfRowsInSection:]中返回实际的行数 电话(自我。tableView reloadData]
在iOS 11上,使用adjuststedcontentinset可以在通话状态栏可见或不可见的两种情况下正确地滚动到顶部。
if (@available(iOS 11.0, *)) {
[tableView setContentOffset:CGPointMake(0, -tableView.adjustedContentInset.top) animated:YES];
} else {
[tableView setContentOffset:CGPointMake(0, -tableView.contentInset.top) animated:YES];
}
迅速:
if #available(iOS 11.0, *) {
tableView.setContentOffset(CGPoint(x: 0, y: -tableView.adjustedContentInset.top), animated: true)
} else {
tableView.setContentOffset(CGPoint(x: 0, y: -tableView.contentInset.top), animated: true)
}
使用contenttoffset不是正确的方法。这样会更好,因为这是表视图的自然方式
tableView.scrollToRow(at: NSIndexPath.init(row: 0, section: 0) as IndexPath, at: .top, animated: true)