0

我正在编写一个调用 Web 服务的 iPhone 应用程序。假设 Web 服务在 json 对象中返回 1000 个元素。我不想加载所有 1000 个,因为解析可能需要一些时间。我想做的是加载我从 json 对象创建的 NSDictionary 的前 15 个元素,然后当用户滚动到 tableview 的底部时,第 16 行显示“加载更多......”。由于我已经将所有数据存储在 NSDictionary 对象中,因此有办法将其分解,使其返回 15,然后用户单击“加载更多……”并加载下一个 15 并继续直到那里NSDictionary 中没有更多元素了吗?我可以展示我的代码示例,但我想知道是否有人有如何完成此操作的示例。提前感谢您的任何帮助。

4

2 回答 2

1

我认为 UITableView 可以为您做到这一点。只构建了可见的单元格。然后,当您向下滚动时,它们的内存将与下一行交换。我认为重新发明轮子没有意义。

另请注意,只有可见的单元格在您输入时被“解析”。它不会在加载时为数据源中的每个项目构建一个单元格。

于 2012-10-10T17:59:08.297 回答
0

假设我没听错,我会说你只需要一些棘手的逻辑来让它工作

我会简单地维护一个索引偏移量,我将乘以您想要随时显示的行数(在您的情况下为 15)

您的逻辑是始终返回您希望允许 + 1 用于最终结果的行数。例如:返回_indexOffset * 15 + 1;//为你的 numberOfRowsForSection

在你的 didSelectIndexPathOf 你检查你是否是最后一行:

if(indexPath.row == _indexOffset * 15)
{
     _indexOffset ++;
     [tableView reloadData];
}

这不是一个确切的答案,但我认为它可以让你开始

于 2012-10-10T17:54:30.937 回答