iOS刷新框架MJRefresh使用

下面的代码:刷新方法,是无缝刷新,无须手动再次拖拽才进行数据加载,只要到了数据位置,即自动刷新

 

1、声明页码属性

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

2、注册tableview刷新方法

/**
 *  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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值