【发布时间】:2012-04-03 21:08:31
【问题描述】:
好的,我已经阅读了大量关于将动态内容(来自网络)加载到 UITableView 以及预先计算单元格高度的问题。我尝试了不同的简单实现,但问题仍然存在......
假设我需要从网上读取一个 JSON 文件,将其解析为“项目”对象,每个对象都有可变大小的图像和各种文本标签,我认为这是避免长时间挂起的正确方法加载所有内容时应用的时间:
- 在应用加载时读取 JSON 文件并解析为 items 数组
- 仅向 tableview 提供项目数组的一小部分(大约 10 个项目) - 因为我需要加载与每个项目关联的图像来计算单元格高度 - 我不希望视图遍历整个项目列表并加载所有图片 - 这会挂起应用,直到每张图片都加载完毕
- 显示带有可用单元格的表格视图(假设我加载了一些“备用”单元格,用户甚至可以滚动到更多项目)
- 在后台使用 Grand Central Dispatch 为所有/部分剩余项目下载图像,然后使用新数据重新加载 tableview(如果项目列表很长,请重复第 4 步)
上面的第 2 步是必要的,因为我无法在不先加载图像的情况下计算单元格高度,而且由于 tableview 首先计算所有单元格的高度,因此下载所有项目的所有图像可能需要很长时间。
您认为这是正确的方法吗?我错过了什么吗?
【问题讨论】:
标签: iphone objective-c ios uitableview