iphone - 如何在加载 View 后在运行时更新 UITableView

标签 iphone objective-c ios uitableview uikit

我已经阅读了几篇关于 UITableView 的文章,包括 official doc还有一些关于SO。但是我的情况好像不太一样。
我想在每次加载 View 时更新表。而且我必须使用 HTTP 请求获取数据。
我现在得到的是:

  1. 进入表格 View 时,我应该使用非同步的HTTP请求来更新数据。因为不想让主线程等待。这样做的一个地方是在 tableView:cellForRowAtIndexPath: 方法中。所以我返回 0 因为一开始没有数据存在。
  2. 当我收到 HTTP 响应时,我使用 beginUpdates endUpdates insertRowsAtIndexPaths:withRowAnimation:
  3. 更新主线程上的行
  4. 而且我必须同时更新“数据源”,但该怎么做?
    还是我应该创建一个守护线程并每隔一段时间更新一次数据?这样当加载 TableView 时数据就准备好了。

最佳答案

你会这样做:

  • 有一个 bool 值或一些变量,您可以在其中可靠地检测您是否拥有所有数据。
  • viewWillAppear 中,重置所有内容。开始加载您的数据。
  • 如果您还没有数据,则只显示一个单元格的一个部分(一个占位符单元格,显示“正在加载...”并显示一个微调器,例如)。
  • 数据完全加载后,您可以设置 bool 或其他内容。
  • 调用[self.tableView reloadData];

在所有的 UITableViewDataSource 方法中,您都需要检查是否已经获得了数据。如果不是,则返回占位符数据。

关于iphone - 如何在加载 View 后在运行时更新 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561664/

相关文章:

ios - 从模板创建对象崩溃并出现错误 : "NSInvalidArgumentException"

ios - 在导航 Controller 之外制作 UIViewController

ios - 如何按字母顺序对表格 View 单元格进行排序

iPhone SDK 3.0 测试

ios - iOS项目选择什么导航策略?

iphone - NSMutableArray(of dictionaries)基于另一个数组的改组数组

ios - Xcode 5 – iOS 7 – 在基于 Storyboard的应用程序中没有限制?

android - iOS:类似 Android 布局的相对定位

iphone - 有人可以解释一下 objective-c 中的委托(delegate)吗?

php - iPhone 应用程序用户标识符