我需要创建一个支持双向无限滚动的动态UITableView。我需要把它放到它不循环的地方,而不是只是继续朝这个方向发展,因为它将处理日期。
tableView将在另外两个UITableViews中的UIViewController中;其中一个是静态的,另一个是动态的(默认方式)。这也提出了如何处理我的一些数据源方法的问题。即tableView:NumberOfRowsInSection
,因为我拥有的数据点的数量将在算法上生成,因此可能是无限的(如:在数据显示全部之前,数据没有定义的数量)
答案 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 *)scrollView
(UIScrollViewDelegate
协议的一部分)并使用contentOffset属性。例如,如果contentOffset.y接近于零,则表示您已接近表格的顶部,并且可以将单元格插入当前位置之上。
答案 2 :(得分:1)
来自上一篇文章: UITableView infinite scrolling
基本上你不想在用户寻找它之前生成额外的数据,你可以挂钩到cellForRowAtIndexPath:方法来知道它们何时接近列表的末尾然后在那时扩展它。 / p>
如果您将它用于日期,为什么不使用选择器视图?