如何实现UITableView无限滚动

时间:2013-06-21 21:33:00

标签: iphone ios uitableview uiviewcontroller infinite-scroll

我需要创建一个支持双向无限滚动的动态UITableView。我需要把它放到它不循环的地方,而不是只是继续朝这个方向发展,因为它将处理日期。

tableView将在另外两个UITableViews中的UIViewController中;其中一个是静态的,另一个是动态的(默认方式)。这也提出了如何处理我的一些数据源方法的问题。即tableView:NumberOfRowsInSection,因为我拥有的数据点的数量将在算法上生成,因此可能是无限的(如:在数据显示全部之前,数据没有定义的数量)

3 个答案:

答案 0 :(得分:6)

您应该在tableView:NumberOfRowsInSection中返回 INT_MAX ,然后在tableView:cellForRowAtIndexPath:

中进行一些操作

让我们说你想要无限期的星期几。所以你会得到一个 @ [@“星期一”,@“星期二”,@“星期三”,@“星期四”,@“星期五”,@“星期六”,@“星期日”的数组。那么当前行的值为indexPath.row % array.count。这样,您可以将少量数据映射到几乎无穷无尽的行数。

要使无限幻觉起作用,您应该在 INT_MAX / 2 附近选择一行。

更新

当返回太多行时,tableview可能会触发异常。在这种情况下,请指定自己的行数。 100.000行正常工作。

答案 1 :(得分:2)

UITableView是一个UIScrollView子类。实现- (void)scrollViewDidScroll:(UIScrollView *)scrollViewUIScrollViewDelegate协议的一部分)并使用contentOffset属性。例如,如果contentOffset.y接近于零,则表示您已接近表格的顶部,并且可以将单元格插入当前位置之上。

答案 2 :(得分:1)

来自上一篇文章: UITableView infinite scrolling

基本上你不想在用户寻找它之前生成额外的数据,你可以挂钩到cellForRowAtIndexPath:方法来知道它们何时接近列表的末尾然后在那时扩展它。 / p>

如果您将它用于日期,为什么不使用选择器视图?