如何实现scrollViewDidScroll:方法?

时间:2014-09-10 10:49:18

标签: ios objective-c uitableview uinavigationbar

我正在构建阅读app的文章。文章列表位于UITableViewController,我在使用scrollViewDidScroll:方法时遇到问题表格的第一个单元格显示在UINavigationBar。但是,当评论此代码时,它显示正常意味着在UINavigationBar之后的第一个单元格。

这是我的代码:

- (void)scrollViewDidScroll: (UIScrollView*)scroll {
    // UITableView only moves in one direction, y axis

    CGFloat currentOffset = scroll.contentOffset.y;
    CGFloat maximumOffset = scroll.contentSize.height - scroll.frame.size.height;

    // Change 10.0 to adjust the distance from bottom
    if (maximumOffset - currentOffset  <= -60.0) {
        x++;
        [self LoadMore];

        [self.tableView addInfiniteScrollingWithActionHandler:^{

        }];

        [self.tableView reloadData];    
    }
}

1 个答案:

答案 0 :(得分:0)

这个答案可能不是您问题的解决方案。这是指出代码中可能导致问题的主要流程。

您不应直接在[self LoadMore];[self.tableView reloadData]; 方法中重新加载数据scrollViewDidScroll:。这将导致在滚动时多次调用该方法。

我认为你已经错误地实现了无限加载。

此代码应放在某些初始化方法(例如,viewDidLoad)

[tableView addInfiniteScrollingWithActionHandler:^{
    [self LoadMore];
    [self.tableView reloadData];
    // call [tableView.infiniteScrollingView stopAnimating] when done
}];

如果您在滚动时计划加载更多项目,我认为您根本不需要使用scrollViewDidScroll:。只需将上面的代码放在viewDidLoad:中,一切都应该有效。您必须跟踪单独加载的项目数。希望这会有所帮助。 :)