我想完全重置UITableView的滚动位置,这样每次打开它时,它都会显示最顶层的项目。换句话说,我想在每次打开时将表格视图滚动到顶部。
我尝试使用以下代码,但看起来我误解了文档:
- (void)viewWillAppear:(BOOL)animated {
[tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO];
}
这是错误的做法吗?
答案 0 :(得分:33)
八月获得了特定于UITableView的方法。另一种方法是:
[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
此方法在UIScrollView中定义,UIScrollView是UITableView的父类。上面的例子告诉它滚动到0x的1x1框 - 左上角,换句话说。
答案 1 :(得分:6)
您正在使用的方法滚动到(如方法名称所示)最近的选定行。在许多情况下,这不会是最重要的一行。相反,你想要使用
scrollToRowAtIndexPath:atScrollPosition:animated:
或
selectRowAtIndexPath:animated:scrollPosition:
您使用要滚动到的行的索引路径。第二种方法实际上是选择一行,第一种方法只是滚动到它。
答案 2 :(得分:0)
我最终做的是:
Swift 4
self.tableView.contentOffset = CGPoint.zero
DispatchQueue.main.async {
self.tableView.reloadData()
}
答案 3 :(得分:0)
斯威夫特:
self.tableView.scrollRectToVisible(CGRect.zero, animated: false)