9

我需要制作一个支持双向无限滚动的动态 UITableView。我需要让它到它不循环的地方,而不是它只是继续朝着这个方向前进,因为它将处理日期。

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

4

3 回答 3

7

您应该返回INT_MAXtableView:NumberOfRowsInSection然后在tableView:cellForRowAtIndexPath:

假设您想要无限的一周中的几天。所以你会有一个@[@"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday", @"Sunday"] 的数组。那么您当前行的值是indexPath.row % array.count。这样您就可以将少量数据映射到几乎无穷无尽的行数。

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

更新:

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

于 2013-06-22T08:35:05.290 回答
2

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

于 2013-06-22T02:53:27.013 回答
1

来自上一篇文章: UITableView 无限滚动

本质上,您不希望在用户查找之前生成其他数据,您可以挂钩 cellForRowAtIndexPath: 方法以了解他们何时接近列表末尾,然后在该点扩展它。

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

于 2013-06-21T21:41:30.883 回答