移动到另一个页面时,UITableview滚动到索引位置的顶部

时间:2018-05-15 05:27:44

标签: ios objective-c uitableview

我有UITableView,如果我移动到另一个屏幕,当我回到UITableView屏幕时,滚动会自动停在第一个索引位置,我该如何克服它。

感谢。

4 个答案:

答案 0 :(得分:0)

覆盖viewWillAppear方法,如下所示,滚动到第一个IndexPath,

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    tblList.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
}

对于Objective-C,

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [tblList scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

答案 1 :(得分:0)

您的问题和描述是矛盾的,要么您希望tableview在用户返回页面时保持在同一位置,要么您希望tableview滚动到顶部。如果您选择第一个选项,那么此解决方案可以帮助您,对于第二个选项,您可以参考PPL答案。

在推送到另一页之前保存tableview内容偏移量。

-(void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  tableViewContentOffset = self.tableView.contentOffset;
 }

并在viewWillAppear

中再次设置tableview偏移量
 -(void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [self.tableView setContentOffset:tableViewContentOffset];
 }

答案 2 :(得分:0)

目标c

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:self.sectionToShow];
[cont.tableview scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];

答案 3 :(得分:0)

最简单的解决方案是完成数据提取并将reloadData UITableView viewDidLoad方法调用到UIViewController的{​​{1}}方法。

因此,无论何时移动到另一个场景,您之前的屏幕都将保持不变,因为viewDidLoad仅在初始化UIViewController时调用一次。