Iphone 如何保留旧的可见单元格';在UITableView顶部插入新单元格后的位置

Iphone 如何保留旧的可见单元格';在UITableView顶部插入新单元格后的位置,iphone,uitableview,Iphone,Uitableview,假设我有一个表视图,我想实现如下内容: 默认情况下,表视图包含n单元格 新单元格将添加到表格视图的顶部(标题) 表视图的数据源是一个可变数组 问题是当我使用[tableview reloadData]时,新数据总是显示在tableview的顶部,但我想要的是将旧的可见单元格保留在旧位置,这意味着重新加载数据后不会刷新。我尝试了一些解决方案,我发现如果我在尾部添加新的单元格,并更新tableview,旧的可见单元格将保持原来的位置,而无需任何额外的努力。但是如果我在顶部添加新的单元格,我不知道

假设我有一个表视图,我想实现如下内容:

  • 默认情况下,表视图包含
    n
    单元格
  • 新单元格将添加到表格视图的顶部(标题)
  • 表视图的数据源是一个可变数组
问题是当我使用
[tableview reloadData]
时,新数据总是显示在tableview的顶部,但我想要的是将旧的可见单元格保留在旧位置,这意味着重新加载数据后不会刷新。我尝试了一些解决方案,我发现如果我在尾部添加新的单元格,并更新tableview,旧的可见单元格将保持原来的位置,而无需任何额外的努力。但是如果我在顶部添加新的单元格,我不知道如何将旧的可见单元格保留在旧的位置

作为参考,我认为iPhone的官方Twitter应用程序只是实现了我在时间线视图中想要的东西,但我不知道如何存档它

伙计们,你们知道吗

非常感谢

-徐东尼

[更新]在文本中描述我想要什么有点困难。我添加了一些图片

如图所示[链接如下],默认单元格从加利福尼亚部分开始,我想在“Brea”之前添加3个新单元格,我想在添加“新单元格1,2,3”之后,单元格“Brea”仍然保持原来的位置。换句话说,新的单元格1、2、3在更新后不可见


很抱歉,因为我没有足够的声誉来使用图像,请访问此url

我已经找到了如何实现此功能的方法,希望这可以帮助其他想要同样效果的人

关键是
UITableView
UIScrollView
的一个子类。因此,
UITableView
具有
UIScrollView
的所有属性,尤其是其中一个属性适用于此:
UITableView.contentOffset
,也可以使用
[UITableView setContentOffset:animated:
设置动画

为了将Twitter与iPhone官方应用程序的效果相同,我们需要知道每次添加或删除多少偏移量。记住前一个偏移量,并在没有动画的情况下设置偏移量+/-增量偏移量


完成。

我已经想出了如何实现这一点,希望这能帮助其他想要同样效果的人

关键是
UITableView
UIScrollView
的一个子类。因此,
UITableView
具有
UIScrollView
的所有属性,尤其是其中一个属性适用于此:
UITableView.contentOffset
,也可以使用
[UITableView setContentOffset:animated:
设置动画

为了将Twitter与iPhone官方应用程序的效果相同,我们需要知道每次添加或删除多少偏移量。记住前一个偏移量,并在没有动画的情况下设置偏移量+/-增量偏移量


完成。

刚刚用这里的代码片段回答了一个类似的问题

基本上:

  • 将滚动偏移量保存在调用beginUpdate:的位置
  • 代替调用InsertCell,您可以将单元格的高度添加到保存的偏移量中
  • 在调用endUpdate:的位置,调用reloadData,然后按保存的偏移量滚动,不显示动画

刚才用这里的代码片段回答了一个类似的问题

基本上:

  • 将滚动偏移量保存在调用beginUpdate:的位置
  • 代替调用InsertCell,您可以将单元格的高度添加到保存的偏移量中
  • 在调用endUpdate:的位置,调用reloadData,然后按保存的偏移量滚动,不显示动画

我真的不明白你的意思,你的表视图是自动滚动到顶部的吗?我想这就是他的意思,如果他在顶部加上单元格,也就是说。这取决于你如何实现tabieview数据源协议。@vodkhang,@Rudiger,是的,这就是我的意思,新的单元格会自动显示在表视图的顶部。@Toro,对不起,我不明白你的意思。我已经检查了UITableViewDataSource中所有可能的方法,但找不到任何与单元格位置相关的方法。你特别是指
tableView:cellForRowAtIndexPath:
?我不太明白你的意思,你的意思是你的表视图自动滚动到顶部吗?我想这就是他的意思,如果他在顶部加上单元格,那就是。这取决于你如何实现tabieview数据源协议。@vodkhang,@Rudiger,是的,这就是我的意思,新的单元格将自动显示在tableview的顶部。@Toro,对不起,我不明白你的意思。我已经检查了UITableViewDataSource中所有可能的方法,但找不到任何与单元格位置相关的方法。你是指
tableView:cellforrowatinexpath: