当UITableView向下滚动和弹跳时调用哪种方法?

时间:2013-12-08 08:20:58

标签: objective-c uitableview

我从XML解析一些数据。我希望我的表显示前10行,然后当用户滚动到底部和表弹跳时,然后它更新(从xml加载新数据),然后显示新行。例如,首先用户获得10行,然后是其他10行,然后是10行。

我想知道当tableview反弹到底部时调用哪种方法,以及一些建议如何实现它,谢谢。

3 个答案:

答案 0 :(得分:4)

UITableViewUIScrollView的子类,UITableViewDelegate符合UIScrollViewDelegate。因此,您附加到表视图的委托将获取scrollViewDidScroll:等事件,您可以在表视图上调用contentOffset等方法来查找滚动位置。

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView {
    CGPoint offset = aScrollView.contentOffset;
    CGRect bounds = aScrollView.bounds;
    CGSize size = aScrollView.contentSize;
    UIEdgeInsets inset = aScrollView.contentInset;
    float y = offset.y + bounds.size.height - inset.bottom;
    float h = size.height;
    // NSLog(@"offset: %f", offset.y);   
    // NSLog(@"content.height: %f", size.height);   
    // NSLog(@"bounds.height: %f", bounds.size.height);   
    // NSLog(@"inset.top: %f", inset.top);   
    // NSLog(@"inset.bottom: %f", inset.bottom);   
    // NSLog(@"pos: %f of %f", y, h);

    float reload_distance = 10;
    if(y > h + reload_distance) {
        NSLog(@"load more rows");
    }
}
来自neoneye

答案 1 :(得分:2)

您可以尝试使用this simple control。只实现一个loadMoreTableFooterDidTriggerRefresh:方法,在那里加载更多行,然后只需调用loadMoreScrollViewDataSourceDidFinishedLoading:。很简单
下面的答案中的一些人给出了更准确的答案,“这种方法被称为”,但是这就像发明重新发明自行车一样,我的观点是使用单独的控制是正确的事情。

答案 2 :(得分:2)

最好使用-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView代替- (void)scrollViewDidScroll:(UIScrollView *)aScrollView。它可以防止多次调用新行加载模块。另外,我在If行中进行了更改,因此可以使用scrollViewDidEndDecelerating:

  

if(y> = h){