无限循环UITableView

时间:2014-02-11 19:55:16

标签: ios iphone objective-c uitableview scroll

我想知道是否有一种修改UITableView的方法,当你滚动到最后一个单元格时,单元格开始重复...并且你可以无限期地滚动,只是为了呈现相同的单元格重复和过度。理想情况下,这也可以反向工作(如果向上滚动而不是向下滚动)。

我无法在网上找到任何关于这个主题的信息,这些信息一直让我觉得它无法完成或者很难......但我想我会问这里是否有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

实际上这很微不足道。

我过去为实现这一目标所做的是:

假设您有一个 N 行数的tableView。 如果所有线条都相同,它将有所帮助。我们假设 S 为每个的高度。

您可以像这样实现dataSource方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return N*1000;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSInteger actualRow = indexPath.row % N;

    // .. do everything using actualRow instead of indexPath.row

}

现在,在您使用delegate和dataSource以及诸如此类的设置tableView之后的viewController上。加上这个:

[tableView setContentOffset:CGPointMake(0,500*N*S)];

基本上你已经创建了一个非常大的重复单元格的tableView,并让它从中间开始。你将有500个实例在顶部和底部都经过,所以你肯定不会到达它的末尾。由于您将重复使用单元格,因此不会对性能产生影响。