Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何加上「;“加载更多”;滚动到表格底部时的页面_Ios_Objective C_Web Services_Uitableview_Afnetworking - Fatal编程技术网

Ios 如何加上「;“加载更多”;滚动到表格底部时的页面

Ios 如何加上「;“加载更多”;滚动到表格底部时的页面,ios,objective-c,web-services,uitableview,afnetworking,Ios,Objective C,Web Services,Uitableview,Afnetworking,我正在试图找出处理分页或在UItableView中翻到底部时“加载更多…”的最佳方法。 我从web服务加载这些数据,这非常灵活,给了我一个pagesize和PageParameter。Pagesize定义每次回拉的结果数,而page参数定义搜索结果组,例如: page=1(返回结果1-10) 第2页(返回结果11-20) 每次向下滚动到底部时,我向服务器请求1次,服务器将给我1页(1、2、3、4…)和结果。 我试着这样装填 -(void)scrollViewDidScroll:(UIScroll

我正在试图找出处理分页或在UItableView中翻到底部时“加载更多…”的最佳方法。 我从web服务加载这些数据,这非常灵活,给了我一个pagesize和PageParameter。Pagesize定义每次回拉的结果数,而page参数定义搜索结果组,例如:

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

第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];
    }

}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView
{
CGFloat height=scrollView.frame.size.height;
CGFloat contentYoffset=scrollView.contentOffset.y;
CGFloat DISTANCEFOMBOTTOM=scrollView.contentSize.height-contentYoffset;
if(与底部的距离<高度)
{
//做某事
[self.viewController getPics];
}
}

我真的不知道如何解决这个问题。任何帮助都会很好。提前感谢。

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

  • 首先,您不应该使用scrollViewDidScroll,因为它在滚动过程中不断被触发。对于这种功能,我总是更喜欢ScrollViewDiEndDecelling,它在每次滚动动作中只会触发一次

  • 其次,您当前正在验证用户是否处于从底部到重新加载的scrollView.frame.size.height或更低的位置。因此,如果您的scrollView是带有导航栏和状态栏的全屏视图,那么在iPhone4上该值为416px,在iPhone5上该值为664px,这是相当多的。我建议您比较distanceFromBottom,它是一个低得多的硬编码值,例如100


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

  • 首先,您不应该使用scrollViewDidScroll,因为它在滚动过程中不断被触发。对于这种功能,我总是更喜欢ScrollViewDiEndDecelling,它在每次滚动动作中只会触发一次

  • 其次,您当前正在验证用户是否处于从底部到重新加载的scrollView.frame.size.height或更低的位置。因此,如果您的scrollView是带有导航栏和状态栏的全屏视图,那么在iPhone4上该值为416px,在iPhone5上该值为664px,这是相当多的。我建议您比较distanceFromBottom,它是一个低得多的硬编码值,例如100


    • 以下代码段将检测用户是否滚动到滚动视图的底部。
      您可以在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
          }
      }
      

      以下代码段将检测用户是否滚动到滚动视图的底部。
      您可以在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
          }
      }
      
      (感谢原作者!),您可以轻松地将其集成到您自己的项目中

      用法:

      _footer = [MJRefreshFooterView footer];
      _footer.scrollView = self.tableView;
      _footer.beginRefreshingBlock = ^(MJRefreshBaseView *refreshView) {
          // Load more data
      };
      
      (感谢原作者!),您可以轻松地将其集成到您自己的项目中

      用法:

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

      如果您不想重新发明轮子,请查看开放源码,它将为您提供一行代码的无限滚动。或者查看文件UIScrollView+SVInfiniteScrolling.m,它将向您展示实现。如果您不想重新发明轮子,请查看开放源码,它将为您提供一行代码的无限滚动。或者查看文件UIScrollView+svInfinitieScrolling.m,它将向您显示实现.Tks以获取答案。是的,我知道,但当我滚动,而不是在底部,它加载,我滚动,我加载…,所以,我想当我滚动到底部,我加载。你有什么例子吗?对不起,我的英语不好。请回答。是的,我知道,但当我滚动,而不是在底部,它加载,我滚动,我加载…,所以,我想当我滚动到底部,我加载。你有什么例子吗?对不起,我的英语不好。