当我们向表视图添加新行时,如何向TAbleview添加平滑滚动

时间:2011-04-20 05:29:22

标签: iphone uitableview

我通过提供xml输入来获取来自.net webserver的消息的图像。

工作正常。

我每3秒发送一次请求,如果有任何新消息和图像,我只需将这些消息和图像添加到数组中并重新加载表视图。

这也没关系,但我需要的是当我重新加载表格视图时,通过平滑滚动现有行,将在表格视图上显示新消息。

与推特相同。

任何人都可以帮助我。

提前感谢你。

2 个答案:

答案 0 :(得分:0)

如果您知道新添加的行的indexPath,则可以使用UITableView的以下函数向上滚动到带动画的新行(平滑效果)。

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

答案 1 :(得分:0)

而不是完全重新加载表,你应该调用insertRowsAtIndexPaths:withRowAnimation:

第二个选项可让您指定动画的方式

(这也比每次重新加载所有数据更有效)

您可以执行以下操作: (这使得在数据已经加载到数据源对象之后将调用recievedImageFrom服务器的假设。此外,myDataSourceArray是为表存储数据的数组,myTableView是UITableView。

-(void)recievedImageFromServer
{
    NSUInteger row = [myDataSourceArray count]-1; // This can also be set to 0 if you want
                                                // to insert at the top of the table

    NSIndexPath* newIndex = [NSIndexPath indexPathWithIndex:row];
    [myTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndex]
                       withRowAnimation:UITableViewRowAnimationTop];
}

然后它将从其数据源请求单元格。