使用一个逻辑步骤更新并在uitableview中插入带动画的新行

时间:2012-07-17 13:54:15

标签: objective-c ios uitableview

当我从服务器获取新数据时,我需要:

  1. 更新UITableView
  2. 的现有行的现有数据
  3. 插入带动画的新行。
  4. 我不知道第1步[UITableView reloadData]何时完成, 所以我可以开始第2步

    如何应对这种情况?

    为简单起见,我更喜欢将第1步[UITableView reloadData]一起使用,但在一个逻辑步骤中实现这两个步骤的任何其他解决方案也会很酷。

    更新 - 也许这是我的错误。

    似乎

    使用现有行信息更新数据模型

    -reloadData

    - 使用新行信息更新数据模型

    -insertWorsAtIndexPaths

    现在正在使用O.K.

    我删除了一些“丑陋”的方式,迫使主线程在第1步之后刷新,而现在,一切都是O.K

    (“丑陋的方式是调用[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f],由于某种原因我需要在过去将它添加到工作中)

    很奇怪..如果真的是O.K吧。 如果仍然有问题,将更新。 对不起,麻烦:))

    更新2

    这就是现在我如何使用它,似乎工作正常:

    更新数据模型中的现有行,然后调用

    [UITableView reloadData];
    

    - 向数据模型添加新行,然后调用

    [UITableView beginUpdates]
    
    [UITableView insertRowsAtIndexPath withRowAnimation]
    
    [UITableView endUpdates]
    

2 个答案:

答案 0 :(得分:0)

您可以使用 NSURLConnection

执行此操作

如果设置了委托,则在有响应时将调用这些方法:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

在这些方法中,您可以将数据添加到tableview,然后执行

[UITableView reloadData];

答案 1 :(得分:0)

您可以使用reloadSections:withRowAnimation:通过动画更新行。或者您可以使用reloadData然后使用insertRowsAtIndexPaths:withRowAnimation:,这取决于您如何获取数据。

检查UITableView Reference