滚动到表格底部时如何添加“加载更多”页面

Posted

技术标签:

【中文标题】滚动到表格底部时如何添加“加载更多”页面【英文标题】:How to add "Load more" page when scrolling to bottom of table 【发布时间】:2013-08-01 17:03:44 【问题描述】:

我正在尝试找出在 UItableView 中滑动到底部时处理分页或“加载更多...”的最佳方法。 我正在从 Web 服务加载这些数据,这非常灵活,给了我页面大小和页面参数。 pagesize 定义了每次拉回的结果数量,而 page 参数定义了搜索结果的组,例如:

page=1(返回结果 1-10)。

page=2(返回结果 11-20)

每次向下滚动到底部时,我向服务器请求 1 次,服务器会给我 1 页(1、2、3、4 ....)和结果。 我试着像这样加载

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

    CGFloat height = scrollView.frame.size.height;

    CGFloat contentYoffset = scrollView.contentOffset.y;

    CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;
    if(distanceFromBottom < height)
    
        //to do something
        [self.viewController getPics];
    


我不确定如何解决这个问题。任何帮助都会很棒。提前致谢。

【问题讨论】:

如果您不想重新发明***,请查看开源github.com/samvermette/SVPullToRefresh,它可以让您通过 1 行代码实现无限滚动。或者查看文件 UIScrollView+SVInfiniteScrolling.m ,它将向您展示实现。 【参考方案1】:

下面的 sn-p 将检测用户是否滚动到滚动视图的底部。 您可以在 if 语句的主体中调用该方法从服务器(异步)获取更多数据。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
    if ([scrollView contentOffset].y == [scrollView contentSize].height - [scrollView frame].size.height) 
        // The user did scroll to the bottom of the scroll view
    

【讨论】:

【参考方案2】:

您的解决方案存在几个缺陷:

首先,您不应该使用 scrollViewDidScroll,因为它会在整个滚动过程中不断触发。对于这种功能,我一直更喜欢 scrollViewDidEndDecelerating,每个滚动手势只会触发一次。

其次,您当前正在验证用户在 scrollView.frame.size.height 或低于底部以重新加载。因此,如果您的 scrollView 是带有导航栏和状态栏的全屏视图,则此值在 iPhone 4 上为 416px,在 iPhone 5 上为 664px - 这是相当多的。我建议您比较 distanceFromBottom 哪个低得多的硬编码值,例如 100。

【讨论】:

谢谢回答。是的,我知道,但是当我滚动而不是在底部时,它会加载,我滚动,我加载...,所以,当我滚动到底部时,我想要加载。你有一些例子吗? P/S:对不起我的英语。【参考方案3】:

Here is a demo(感谢原作者!),您可以轻松将其集成到您自己的项目中!

用法:

_footer = [MJRefreshFooterView footer];
_footer.scrollView = self.tableView;
_footer.beginRefreshingBlock = ^(MJRefreshBaseView *refreshView) 
    // Load more data
;

【讨论】:

以上是关于滚动到表格底部时如何添加“加载更多”页面的主要内容,如果未能解决你的问题,请参考以下文章

uicollectionview 在底部滚动加载更多数据。 iOS 斯威夫特

滚动到页面底部 100px 时,jQuery 加载内容,触发多个事件

Jquery鼠标滚动到页面底部自动加载更多内容,使用分页

Jquery鼠标滚动到页面底部自动加载更多内容,使用分页

当页面到达底部时,ajax 和 php 从 mysql 加载更多内容

在 React.js 中向下滚动页面时如何加载更多搜索结果?