我已经阅读了几篇关于 UITableView 的文章,包括 official doc还有一些关于SO。但是我的情况好像不太一样。
我想在每次加载 View 时更新表。而且我必须使用 HTTP 请求获取数据。
我现在得到的是:
- 进入表格 View 时,我应该使用非同步的HTTP请求来更新数据。因为不想让主线程等待。这样做的一个地方是在
tableView:cellForRowAtIndexPath:
方法中。所以我返回 0 因为一开始没有数据存在。 - 当我收到 HTTP 响应时,我使用
beginUpdates endUpdates insertRowsAtIndexPaths:withRowAnimation:
更新主线程上的行
- 而且我必须同时更新“数据源”,但该怎么做?
还是我应该创建一个守护线程并每隔一段时间更新一次数据?这样当加载 TableView 时数据就准备好了。
最佳答案
你会这样做:
- 有一个 bool 值或一些变量,您可以在其中可靠地检测您是否拥有所有数据。
- 在
viewWillAppear
中,重置所有内容。开始加载您的数据。 - 如果您还没有数据,则只显示一个单元格的一个部分(一个占位符单元格,显示“正在加载...”并显示一个微调器,例如)。
- 数据完全加载后,您可以设置 bool 或其他内容。
- 调用
[self.tableView reloadData];
在所有的 UITableViewDataSource
方法中,您都需要检查是否已经获得了数据。如果不是,则返回占位符数据。
关于iphone - 如何在加载 View 后在运行时更新 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561664/