0

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

  1. 更新现有行的现有数据UITableView
  2. 插入带有动画的新行。

问题是我不知道第 1 步[UITableView reloadData]何时完成,所以我可以开始第 2 步

如何处理这种情况?

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

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

看来

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

-重新加载数据

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

-insertWorsAtIndexPaths

现在工作正常。

我删除了一些在第 1 步后强制主线程刷新的“丑陋”方式,现在一切正常

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

想知道..如果现在一切都很好。如果仍然有问题,将更新。给您添麻烦了:)

更新 2

这就是我现在使用它的方式,并且似乎可以正常工作:

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

[UITableView reloadData];

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

[UITableView beginUpdates]

[UITableView insertRowsAtIndexPath withRowAnimation]

[UITableView endUpdates]
4

2 回答 2

0

您可以使用NSURLConnection来做到这一点,

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

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

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

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

[UITableView reloadData];
于 2012-07-17T14:02:18.137 回答
0

您可以使用reloadSections:withRowAnimation:动画来更新您的行。或者您可以使用reloadDatainsertRowsAtIndexPaths:withRowAnimation:取决于您如何获取数据。

检查UITableView 参考

于 2012-07-17T14:48:30.033 回答