【发布时间】:2011-08-17 21:11:19
【问题描述】:
我有一个从网络服务中提取的数据列表。我刷新数据,我想在当前数据上方的表格视图中插入数据,但我想在表格视图中保留我当前的滚动位置。
现在我通过在当前部分上方插入一个部分来完成此操作,但它实际上是插入、向上滚动,然后我必须手动向下滚动。在此之前,我尝试在表格上禁用滚动,但这也不起作用。
这看起来很不稳定,而且看起来很老套。有什么更好的方法来做到这一点?
[tableView beginUpdates];
[tableView insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];
NSUInteger iContentOffset = 200; //height of inserted rows
[tableView setContentOffset:CGPointMake(0, iContentOffset)];
【问题讨论】:
-
我正在尝试模仿大多数 Twitter 应用程序所做的事情。他们在新旧数据之间放置了一个分隔符(表示有新数据),并允许您按时间顺序滚动时间轴。
-
插入后有没有试过
scrollToNearestSelectedRowAtScrollPosition:animated:或scrollToRowAtIndexPath:atScrollPosition:animated:? -
您能解释一下为什么
scrollToRowAtIndexPath:atScrollPosition:animated:和scrollToNearestRow...不适合您吗?编辑:哈,尼克打败了我。 -
@Nick @Josh 我可以使用
setContentOffset:完成此滚动,但我真正的问题是如何避免滚动。此外,根据我的尝试,这两个选项的效果都比setContentOffset:差。 -
只是为了理解这一点:例如,您在索引 13 处,并且喜欢在 3 处插入一行,这不应该滚动并将 pos 保持在 13,对吧?
标签: iphone objective-c uitableview