Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当用户使用返回按钮查看UITableView以滚动到最后选定的行时_Ios_Swift_Uitableview_Swift3 - Fatal编程技术网

Ios 当用户使用返回按钮查看UITableView以滚动到最后选定的行时

Ios 当用户使用返回按钮查看UITableView以滚动到最后选定的行时,ios,swift,uitableview,swift3,Ios,Swift,Uitableview,Swift3,我有一个大约200行的桌面视图。当用户选择一行以查看详细信息,然后单击“上一步”按钮时,tableView始终返回到表的顶部 我想设置tableView以强制tableView自动滚动到用户上次选择的行 如何做到这一点?您调用了任何webservice调用或在ViewWillView中重新加载数据,或ViewDidDisplay只需从ViewWillDisplay中删除该webservicecall/reloadData,或ViewDidDisplay它会自动显示tableview中最后选定的单

我有一个大约200行的桌面视图。当用户选择一行以查看详细信息,然后单击“上一步”按钮时,tableView始终返回到表的顶部

我想设置tableView以强制tableView自动滚动到用户上次选择的行

如何做到这一点?

您调用了任何webservice调用或在ViewWillView中重新加载数据,或ViewDidDisplay只需从ViewWillDisplay中删除该webservicecall/reloadData,或ViewDidDisplay它会自动显示tableview中最后选定的单元格

或者另一种方式

savedScrollPosition表示将所选索引保存在didselectRow上


我建议在用户按下单元格时,将选定的nsindepath存储在didSelectRowAtIndexPath方法中。 然后,在视图控制器中的VIEWWILLEXPEND或VIEWDIDEMAKER方法中,您的表视图仅被调用

tableView.scrollToRow(at: selectedIndexPath, at: .top, animated: true)

然后,它会将您的表格视图滚动到以前选择的单元格。

将最后选择的行保存在NSUserDefaults中,并使用UITableView ScrollToRowatinexPath,如下所示:

目标-C: 斯威夫特:
重新加载UITableView后使用此选项。

我认为您应该找出导致表格滚动到顶部的原因。您还可以保存所选的indexPath以滚动到用户上次选择的行。

我想您调用了tableView reloadData in the viewWillsead fund,因此每次从其他ViewController返回时,它都会重新加载tableView。谢谢。我尝试了你的代码,希望y坐标能在相同的精确位置对齐,但相反,它会移到帧的顶部,行的高度更小。找不到获得精确y坐标的方法。
tableView.scrollToRow(at: selectedIndexPath, at: .top, animated: true)
[self.tableView scrollToRowAtIndexPath:lastSelectedIndex atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
self.tableView.scrollToRowAtIndexPath(lastSelectedIndex, atScrollPosition: UITableViewScrollPosition.Bottom, animated: true)