当我从服务器获取新数据时,我需要:
UITableView
和我不知道第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]
答案 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:
,这取决于您如何获取数据。