在目标c中滚动,分页或加载UITableView的更多技术

时间:2016-12-30 07:34:59

标签: ios objective-c uitableview pagination lazy-loading

Hai我是iOS应用程序开发的新手。在我的项目中,我从Web服务获取了4000个响应数据,我需要在tableview上显示它但这里的条件是我必须最初只显示30条记录,一旦用户滚动我需要加载更多记录。

2 个答案:

答案 0 :(得分:1)

您可以通过以下两种方式进行管理:
1)手动
这里你需要做的是,你需要两个NSMutableArray,比如说 responseArray和tblArray 。从该responseArray包含您的Web服务的响应,tblArray将管理UITableView计数。
通过此,您可以最初显示一组数据,例如, 10,所以int count = 10,将记录从responseArray添加到tblArray 。当用户向下滚动时,您可以从responseArray获取11-20个数据,并使用

将它们添加到tblArray
for(int i = 10; i < 20; i++)
{
    [tblArray addObject:[responseArray objectAtIndex:i]]
}
[<your TableView Name> reloadData];
count += 10;

2)Handel来自服务器端
使用此选项,您可以轻松处理所有内容。
为此,您只需将当前计数/分页值传递给服务器,服务器将相应地响应您 例如:最初你现在没有任何记录。因此,您可以在Web服务参数中传递0 一旦得到答复,您将有 10条记录作为回复。在UITableView中显示它们 现在,当用户向下滚动时,您可以在这里管理数组计数  -(void)scrollViewDidScroll:(UIScrollView *)scrollView
在上面的方法中,您可以将计数值增加1,或者可以将其设置为等于数组计数。目前为count += 1count += <yourArrayName>.count 之后,您再次将计数值作为您的网络服务参数传递,您将在回复中获得下一条记录。您需要通过[<yourArrayName> arrayByAddingObjectsFromArray:<your resposeArray>];附加到数组中 使用任何一种方法都可以解决问题。但我个人建议使用第二个选项

答案 1 :(得分:0)

如果您正在寻找第三方库来实施Load More,您可以试试这个

https://github.com/samvermette/SVPullToRefresh

手动您也可以使用UIScrollViewDelegate方法scrollViewDidEndDecelerating来跟踪最后一个可见的单元格,之后您可以在dataSource中添加更多数据。

相关问题