为什么我的UITableView出现在正确的滚动位置?

问题描述:

我有一个基于分割视图的应用程序,它提供主 - 细节界面,并使用弹出窗口在纵向模式下显示主列表。弹出窗口提供了一个分段表格视图,最终由NSFetchedResultsController的子类填充。我可以点击工具栏按钮来显示主列表,滚动到任何行,然后点击该行以关闭弹出窗口。为什么我的UITableView出现在正确的滚动位置?

我的问题是,如果表格滚过第二部分的顶部,当我关闭弹出窗口然后点击工具栏按钮重新显示它时,表格的滚动位置始终设置为第一第二部分的行位于列表的顶部。如果我没有滚动过第二部分的顶部,那么当表格再次出现时,它会正确记住它的滚动位置。

同样,在横向模式下,如果我滚动表格超过第三部分的顶部,然后旋转到纵向,当我回到横向时,滚动位置始终设置为使第三部分的第一行是在列表顶部。

我试图在主视图控制器的-viewWillAppear以及分割视图委托的splitViewController:popoverController:willPresentViewController:中调用-scrollToNearestSelectedRowAtScrollPosition:animated,但没有任何效果。任何人都知道我可能做错了什么?

你试过存储tableView.contentOffset

CGPoint offset = tableView.contentOffset; 

... 
... 
... 

[tableView setContentOffset: offset]; 
+0

最令人沮丧的问题是如何经常有如此简单的解决方案?非常感谢我提供了contentOffset属性。 – 2010-05-09 05:45:28

+0

@zbrimhall,没问题:) – 2010-05-09 05:46:50