记住UITableView上的滚动位置

myl*_*gon 30 uitableview uiviewcontroller viewdidappear reloaddata ios

我在xcode中的iOS应用程序有点问题.我有一个UITableView加载几百个单元格.当我向下滚动到特定单元格并向下钻取到详细视图控制器并再次返回时,主视图表一直返回到顶部.我看过以下两个相似的问题.

如何获取UITableView滚动位置以便保存?

在UITableView中设置滚动位置

我仍然无法让这些工作.我不是最有经验的编码员,所以我真的很挣扎.

我知道像viewWillDisappear和viewDidAppear这样的东西需要改变,但我真的不能比这更进一步.

在此表中,我有一个reloadData功能,因此可以从服务器和工作搜索栏中下载最新数据.

无论如何,伸出援助之手会很棒.谢谢,

卢克

Pra*_*kam 67

看到这里,你必须先保存的滚动位置tableView,即contentOffsettableView,然后再用它,当你回来tableView.

1)您将在何时何地保存它:

时间:此时,当您向下钻取以detailViewController保存contentOffsettableView

如何:float verticalContentOffset = tableView.contentOffset.y;

2)如何将tableView设置回相同的滚动位置:

[tableView setContentOffset:CGPointMake(0, verticalContentOffset)];
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你.

  • +1正是我想要的. (3认同)
  • 完善!谢谢! (2认同)

myl*_*gon 12

排序!

从Desdenova获得一点灵感,在工作中我很好地思考它,并意识到它可能是什么.记住我有一个搜索栏,几个月前我已经实现了以下代码来隐藏它:

[self.tableView setContentOffset:CGPointMake(0,-20) animated:NO];
Run Code Online (Sandbox Code Playgroud)

天真地我把它放在viewDidAppear而不是viewDidLoad.显然,这确实隐藏了搜索栏,但是当它在错误的void命令中时,它每次masterDetailView返回到堆栈顶部时都会执行它.所以,在将上面的代码移到viewDidLoad之后,它现在仍然隐藏它,但只有一次.

对于像我这样的其他初学者,我只是像这样拼写出来,可能会遇到同样的问题而且可能只是为了拯救他们的理智!

感谢大家帮助我的想法.

给大家+1!