我有UITableView
,如果我移动到另一个屏幕,当我回到UITableView
屏幕时,滚动会自动停在第一个索引位置,我该如何克服它。
感谢。
答案 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
时调用一次。