美文网首页
刷新加载

刷新加载

作者: huicuihui | 来源:发表于2018-03-14 11:47 被阅读4次

    刷新设置:

    self.tableView.mj_header = ({
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的refresh方法)
            MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(refresh)];
            header.lastUpdatedTimeLabel.hidden = YES;
            header.stateLabel.hidden = YES;
    
                // 设置自动切换透明度(在导航栏下面自动隐藏)
                header.automaticallyChangeAlpha = YES;
                // 隐藏时间
                header.lastUpdatedTimeLabel.hidden = YES;
                // 设置刷新控件底部的背景色
               header.backgroundColor = kBackgroundUIColor;
                // 开始刷新,自动刷新
                [header beginRefreshing];
    
            header;
        });
    

    上拉加载更多 设置:

                // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock)
                self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
                    [weakSelf fetchMore];
                }];
                self.tableView.mj_footer.backgroundColor = [UIColor whiteColor];
               // 马上进入刷新状态  很少使用
              //[self.tableView.mj_footer beginRefreshing];
    

    tableview上拉加载更多页面跳动问题

    问题研究:
    将cell的高度固定

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return <#固定数值高度#>;
    }
    

    然后再向上滑动tableview就不会跳动了。可以确定一下原因是计算高度的问题。至少是有这个的原因。所以就从这里去优化页面。
    通过打断点查看tableview代理方法执行顺序
    先执行

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
    

    后执行

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
    

    最终的解决方法:
    只需在创建tableview时添加下面三行代码即可:

        self.tableView.estimatedSectionFooterHeight = 0;
        self.tableView.estimatedRowHeight = 0;
        self.tableView.estimatedSectionHeaderHeight = 0;
    

    自动加载更多

    不用滑到底部了再手动的向上拉一下,才去加载更多。
    再代理方法中实现加载更多的方法即可:

    #pragma mark - 上拉加载更多
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
    
    //                if (<#正在加载中#>) {
    //                    return;
    //                }
    
        if (scrollView.contentOffset.y > scrollView.contentSize.height - scrollView.frame.size.height - 100) {
                    [self.tableView.mj_footer beginRefreshing];
         //   [self fetchMore];
        }
    }
    

    相关文章

      网友评论

          本文标题:刷新加载

          本文链接:https://www.haomeiwen.com/subject/rkqfqftx.html