如何在UITableView中显示数组中的x个对象,然后在向下滚动时显示更多?

时间:2015-07-30 23:57:20

标签: ios arrays swift uitableview

我正在使用swift的游戏应用程序,目前有一个tableView显示分数,试验次数等,从解析中下载到数组中。

但是,如果用户多次玩游戏,此表可能会很长。因此,我想通过在tableview中显示数组的第一个,比如20个对象来改进应用程序,然后,一旦用户向下滚动到表的末尾,它会自动添加更多行并显示接下来的20个数组中的对象(以及原始的20,使tableview现在为40行)

如果有人熟悉Twitter应用程序,那正是我想要的。最初显示的是一定数量的推文,然后一旦向下滚动到表格的末尾,就会加载更多的推文,以减少加载时间。

问题是,我根本不知道如何实现这一点。我从来没有遇到过只需要使用数组的一部分的情况。任何帮助将不胜感激。丹

2 个答案:

答案 0 :(得分:0)

UITableView是一个虚拟视图,它会调用您的数据来为视图中的给定行创建单元格,并销毁视图之外的单元格。您还应该重新使用已创建的单元格。

所以,我认为关于预加载列表部分的问题的答案是......你不应该这样做。只需实现数据源并回答数据回调。

更多here in the apple docs on the datasource for a UITableView

答案 1 :(得分:-2)

这在Objective-C的How to know when UITableView did scroll to bottom in iPhone中得到了解决。如果有任何帮助需要将其翻译成Swift,请发表评论,我会更新答案。

编辑 - 真正的问题:

tableView委托方法允许您在数据和表格的可查看数据之间执行任意逻辑/映射。因此,当您执行检测到底部的滚动时,请增加一个内部状态变量,例如声明为类范围存储属性的var rowsToReveal。递增后,请致电tableView.reloadData()。然后重新编写numberOfRowsInSection委托方法以使用rowsToReveal而不是someDataArray.count或您拥有的任何硬编码值。当然,确保rowsToReveal永远不会超过计数,否则 - 即时崩溃。