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