MJRefresh普通使用

作者: 郑州程序员王一 | 来源:发表于2016-08-25 21:45 被阅读3265次

    1、声明页码属性

    /** 当前页码 */
    @property (nonatomic, assign) NSInteger page;
    

    2、刷新方法

    /**
     *  tableView刷新方法
     */
    -(void)setupTableViewRefresh{
        //刷新头部
        self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadTableViewNewData)];
        //改变透明度
        self.tableView.mj_header.automaticallyChangeAlpha = YES;
        //进来就开始刷新
        [self.tableView.mj_header beginRefreshing];
        //刷新尾部
        self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadTableViewMoreData)];
        //防止网络慢的时候,显示脚部刷新,进入隐藏
        self.tableView.mj_footer.hidden = YES;
    }
    

    3、下拉刷新

    /**
     * 加载新的帖子数据
     */
    -(void)loadTableViewNewData{
        
        // 结束上拉
        [self.tableView.mj_footer endRefreshing];
        //page初始值
        self.page = 0;
        
        //参数
        NSMutableDictionary *params = [NSMutableDictionary dictionary];
        params[@"p"] = @(self.page);
        params[@"psize"] = @(15);
        
        // 发送请求
        [[BM_NetAPIManager sharedManager] rb_requestComment_WithParams:params andBlock:^(id responseData, NSError *error) {
            if (responseData)
            {
                if ([responseData[@"status"] intValue] == 1)
                {
                    [self.topics removeAllObjects];
                    self.topics = [RBHotCommentModel mj_objectArrayWithKeyValuesArray:responseData[@"data"]];
                    // 刷新表格
                    [self.tableView reloadData];
    
                    /**  如果服务器返回了总数量,这段就不需要了,使用第5条写法
                    //判断首次加载数据是否小于服务器返回数量
                    if (self.topics.count < 15) {
                        //结束刷新
                        [self.tableView.mj_header endRefreshing];
                        self.tableView.mj_footer.hidden = NO;
                        [self.tableView.mj_footer endRefreshingWithNoMoreData];
                        return ;
                    }
                     */
                    //结束刷新
                    self.page++;
                }
                else
                {
                    //没有获取到数据
                    [self.tableView.mj_header endRefreshing];
                    self.tableView.mj_footer.hidden = NO;
                    [self.tableView.mj_footer endRefreshingWithNoMoreData];
                    return ;
                }
            }
            else
            {
                
            }
            //结束刷新
            [self.tableView.mj_header endRefreshing];
            self.tableView.mj_footer.hidden = NO;
        }];
    }
    

    4、上拉刷新

    /**
     * 加载更多的帖子数据
     */
    - (void)loadTableViewMoreData{
        
        // 结束上拉
        [self.tableView.mj_header endRefreshing];
        
        // 参数
        NSMutableDictionary *params = [NSMutableDictionary dictionary];
        params[@"p"] = @(self.page);
        params[@"psize"] = @(15);
        
        // 发送请求
        [[BM_NetAPIManager sharedManager] rb_requestComment_WithParams:params andBlock:^(id responseData, NSError *error) {
            if (responseData)
            {
                if ([responseData[@"status"] intValue] == 1)
                {
                    // 字典 -> 模型
                    NSArray *newTopics = [RBHotCommentModel mj_objectArrayWithKeyValuesArray:responseData[@"data"]];
                        //将新数据添加到 后面
                        [self.topics addObjectsFromArray:newTopics];
                        // 刷新表格
                        [self.tableView reloadData];
                    
                   /**  如果服务器返回了总数量,这段就不需要了,使用第5条写法
                    //如果下拉数据小于服务器返回数量,停止下拉刷新
                    if (newTopics.count < 15) {
                        [self.tableView.mj_footer endRefreshing];
                        [self.tableView.mj_footer endRefreshingWithNoMoreData];
                        return ;
                    }
                    */
                    self.page++;
                }
                else
                {
                    
                }
            }
            else
            {
                
            }
            //结束刷新
            [self.tableView.mj_footer endRefreshing];
        }];
    }
    

    5: 如果服务器返回来了总数量,刷新判断就好说了

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        //刷新数据处理
        self.tableView.mj_footer.hidden = (self.dataArray.count == 0);
        if (self.dataArray.count == self.totalCount) {
            [self.tableView.mj_footer endRefreshingWithNoMoreData];
        }else{
            [self.tableView.mj_footer endRefreshing];
        }
        return self.dataArray.count;
    }
    

    勤学如早春之苗,不见其增,日有所涨。
    辍学如磨刀之石,不见其减,日有所损。

    相关文章

      网友评论

      本文标题:MJRefresh普通使用

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