如何重置UITableView的滚动位置?

时间:2008-11-21 04:24:27

标签: iphone cocoa-touch uitableview scroll

我想完全重置UITableView的滚动位置,这样每次打开它时,它都会显示最顶层的项目。换句话说,我想在每次打开时将表格视图滚动到顶部。

我尝试使用以下代码,但看起来我误解了文档:

- (void)viewWillAppear:(BOOL)animated {
    [tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO];
}

这是错误的做法吗?

4 个答案:

答案 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)