Objective-c动态加载更多UITableViewCells

时间:2012-10-10 17:45:03

标签: objective-c ios uitableview

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

2 个答案:

答案 0 :(得分:1)

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

另外,作为注释,只有可见的单元格在您放置时才会“解析”。在加载时,它不会为数据源中的每个项构造一个单元格。

答案 1 :(得分:0)

假设我听到你说得对,我会说你只需要一点点狡猾的逻辑来实现这个目标

我只是维护一个索引偏移量,我将乘以你想要随时显示的行数(在你的情况下为15)

您的逻辑是始终返回您想要允许的行数+ 1作为最终行。例如:return _indexOffset * 15 + 1; //为您的numberOfRowsForSection

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

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

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