在UITableView中进行分页的最佳方法

时间:2011-08-31 13:44:24

标签: iphone ios ios4 uitableview

我正在开发一个房地产应用程序。应用程序在用户填写表单(最小房间,价格等)后查询数据源服务器,并获取具有特定键/值对的json字符串(属性名称,属性地址,经度/纬度,价格等等... )。

我正在尝试做的是允许用户浏览UITableView中的列表,即使Feed包含很长的项目列表而不必重载用户iphone(在查询之前,返回的项目数量是未知的)完成,所以应用程序需要处理这个)...你建议我分页?

提前,

的Stephane

3 个答案:

答案 0 :(得分:11)

如果使用tableView:cellForRowAtIndexPath:正确编写了dequeueReusableCellWithIdentifier:方法(并且您没有使用tableView:heightForRowAtIndexPath:,或者它非常快),UITableView应该能够处理数千行而无需超载设备。您只需要关注原始数据的存储。

至于在查询完成之前不知道行数的问题,这很容易解决。当您从查询中收到更多行时,只需使用UITableView的insertRowsAtIndexPaths:withRowAnimation:通知表格视图有更多行可用(并确保您的tableView:numberOfRowsInSection:tableView:cellForRowAtIndexPath:会反映这些新行)。

如果您还想等到用户在继续查询之前滚动到当前列表的末尾,请注意UITableView是UIScrollView的子类,UITableViewDelegate实现UIScrollViewDelegate。因此,只需在UITableViewDelegate上使用scrollViewDidScroll:来了解用户滚动的时间,然后检查表格视图的contentOffset,以确定它们是否已向下滚动到足以让您加载更多数据。

答案 1 :(得分:0)

人们可以拥有的平均物品数量是多少? 10,100,1000?它有图像还是数据?一般来说,我投票赞成没有任何分页 - 只需在向下滚动时加载更多,并且如果没有太多则尝试在第一次加载所有这些分页。您还可以将它们缓存在设备上并添加“pull to refresh”功能,这样您就可以改善离线体验。

答案 2 :(得分:0)

如果有人对使用按钮进行分页感兴趣,那么我发现此帖子有用http://www.mindyourcode.com/ios/iphone/pagination-in-uitableview-with-next-previous-buttons/ 可能对其他一些人来说会有所帮助

相关问题