iphone - 在 iOS 中将动态内容加载到 UITableView 的正确方法

标签 iphone objective-c ios uitableview

好吧,我已经阅读了大量关于将动态内容(从网络)加载到 UITableView 的主题以及预先计算单元格高度的问题。我尝试了不同的简单实现,但问题仍然存在......

假设我需要从 Web 读取一个 JSON 文件,将其解析为“item”对象,每个对象都具有可变大小的图像和各种文本标签,这是我认为避免长时间挂起的正确方法加载所有内容时应用程序的时间:

  1. 在应用加载时读取 JSON 文件并解析为项目数组
  2. 仅向 TableView 提供项目数组的一小部分(大约 10 个项目)——因为我需要加载与每个项目关联的图像来计算单元格高度——我不希望 View 遍历整个项目列表并加载所有图像 - 这会挂起应用程序,直到加载完每张图像
  3. 显示带有可用单元格的表格 View (假设我加载了一些“备用”单元格,用户甚至可以滚动到更多项目)
  4. 在后台使用 Grand Central Dispatch 下载所有/部分剩余项目的图像,然后使用新数据重新加载表格 View (如果项目列表很长,请重复第 4 步)

上面的第 2 步是必要的,因为我无法在不先加载图像的情况下计算单元格高度,并且由于 tableview 首先计算所有单元格的高度,因此下载所有项目的所有图像可能需要很长时间。

您认为这是正确的做法吗?我错过了什么吗?

最佳答案

为什么不在表格 View 中标准化图像大小。然后您可以在图像显示时对其进行操作以适合尺寸。如果选择,提供一种查看图像的方法。 Quartzcore 框架将允许您获取原始图像并调整它们的大小。

我只是建议这样做,因为它会使您的表格 View 在统一图片尺寸下看起来比随机图片更具吸引力。

关于iphone - 在 iOS 中将动态内容加载到 UITableView 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001424/

相关文章:

iphone SDK - 如何连接2个 Controller ?

iphone - 如何在 UINavigationController 中正确继承 UITableViewController?

ios - iPhone 应用程序包含导航栏和选项卡栏。我从什么开始创建我的项目、SingleView 应用程序或基于选项卡栏的应用程序?

ios - 如何解决 "Failed to determine navigation direction for scroll"错误

iphone - 带有 Facebook Connect 的移动 Web 应用程序的空白屏幕

iphone - 在 iPhone 中,是否保证始终调用 viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear?

ios - 如何查找ios xcode中的内存泄漏?

objective-c - 应用程序中可能使用的嵌入式数据库引擎

iOS GameKit 无法通过蓝牙连接

objective-c - iOS从文本框中解析和int并将其分配给要用于求和的整数值?