它是一种在重新加载tableview后保留contentOffset的方法吗?

时间:2015-04-08 13:31:16

标签: ios uitableview uiviewcontroller

我需要重新加载tableview,但在某种程度上我想保持滚动位置。有办法吗?也许存储内容偏移并在viewDidLayoutSubviews我应该重置它?

4 个答案:

答案 0 :(得分:3)

TableView不会重置滚动位置。即使在调用reloadData函数之后,它也会保持内容偏移。因此,如果你想保持像素位置,则无需做任何事情。

如果要在重新加载数据或更改数据源时更改行高,则可以使用scrollToRowAtIndexPath:atScrollPosition:animated:方法。

答案 1 :(得分:0)

在使用reloadData(带动画:NO)之前调用scrollToRowAtIndexPath:atScrollPosition:animated:

另外,如果更新的tableview中有更少的单元格以防止崩溃,请小心。

希望有所帮助

答案 2 :(得分:0)

重新加载表格视图后,您需要调用TableView的方法scrollToRowAtIndexPath:atScrollPosition:animated

只需提供索引路径,滚动位置即可以是以下之一

UITableViewScrollPositionNone,
UITableViewScrollPositionTop,    
UITableViewScrollPositionMiddle,   
UITableViewScrollPositionBottom
动画参数中的

和YES / NO。

答案 3 :(得分:0)

您可以在重新加载表之前保存当前偏移量使用此方法来保存当前偏移量

self.tableView.contentOffset.y

或者您可以像这样重新加载它将从您当前的偏移重新加载您的表 试试这个:

[UIView animateWithDuration:0.1 delay:0 options:0 animations:^{
     self.tableView.contentOffset = CGPointMake(0, currentOffset);
} completion:^(BOOL finished) {
     [self.tableView reloadData];
}];