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

Posted

技术标签:

【中文标题】在 UITableView 中进行分页的最佳方法【英文标题】:Best way to do paging in UITableView 【发布时间】:2011-08-31 13:44:23 【问题描述】:

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

我想要做的是允许用户浏览 UITableView 中的列表,即使提要包含一长串项目,而不必使用户 iphone 超载(在查询之前返回的项目计数是未知的完成,所以应用程序需要处理这个)...你会建议我分页吗?

提前谢谢,

斯蒂芬

【问题讨论】:

我在分页上找到的最佳实现:lwxted.com/blog/2012/smart-data-loading-table-views 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

人们可以拥有的平均物品数量是多少? 10、100、1000?它有图像还是只有数据?一般来说,我会投票支持没有任何分页 - 向下滚动时加载更多,如果没有太多,请尝试在第一次加载所有页面。您还可以将它们缓存在设备上并添加“拉动刷新”功能,从而改善离线体验。

【讨论】:

每页 10 个项目,如果它在网页上并且它有图像要显示在表格单元格中 如前所述,我不知道总列表。例如,一个特定的搜索可能有 110 个项目,每个“页面”显示 10 个项目,它会显示 11 个“页面” 每页 10 个项目,如果它在网页上并且它有图像要显示在表格单元格中 在这种情况下,我只需将所有内容加载到一个表中,并且没有分页。【参考方案3】:

如果有人对使用按钮进行分页感兴趣,那么我发现这篇文章很有用http://www.mindyourcode.com/ios/iphone/pagination-in-uitableview-with-next-previous-buttons/ 可能对其他人会有所帮助

【讨论】:

以上是关于在 UITableView 中进行分页的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

在codeigniter中在一页上进行多个分页的最佳方法

在 SQL Server 上执行分页的最佳方法是啥?

使用带有mysql的spring MVC实现分页的最佳方法是啥

在存储库级别在 Doctrine2 ORM 中实现分页的最佳实践

iOS:无法在分页的 UIScrollView 中的 UITableView 之间滚动

MySQL 数据 - 实现分页的最佳方式?