MJRefresh的二次封装使用

一般情况下,我们使用MJRefresh进行刷新和加载的时候,我们可能会这样写

- (void)getData{
    //当前页码设置为1
    //请求api
    //结束加载
    //控件reload
}

- (void)getMoreData{
    //当前页码加1
    //请求api
    //结束加载
    //控件reload
}

这样写,有一个不好的地方就是,代码重用的很多,所以,就应该考虑封装一个方法来处理
我们可以写一个这样的方法

- (void)universalGetData:(MJRefreshComponent *)refreshComponent{

}

这个MJRefreshComponent,是刷新的基类(可以点进去看一下,mjrefreshhead和mjrefreshfoot都是继承于这个类)
在这个方法里,可以这样

if ([refreshComponent isKindOfClass:[MJRefreshHeader class]]) {
        self.page = 1;
        self.listDatasouce = [NSMutableArray array];//初始化数据源数组
    }
    if ([refreshComponent isKindOfClass:[MJRefreshBackNormalFooter class]]) {
        self.page += 1;
    }

设置好页码之后,就开始网络请求了

[[REFNetworkManager manager] universalNetworkRequestWithNetConnectType:get requestURL:loanListFiltrate_url model:[RHomeModel class] para:self.pickDic success:^(id response) {
        [weakSelf.listDatasouce addObjectsFromArray:response];
        [refreshComponent endRefreshing];
        if (((NSArray *)response).count < kMaxCountOfPage) {
            [weakSelf.listView.mj_footer endRefreshingWithNoMoreData];
        }else{
            [weakSelf.listView.mj_footer resetNoMoreData];
        }
        [weakSelf.listView reloadData];
    } successCodeError:^(id response) {
        [refreshComponent endRefreshing];
    } fail:^(NSError *error) {
        [refreshComponent endRefreshing];
    } netError:^{
        [refreshComponent endRefreshing];
    }];

解释一下代码:
这个网络请求,是我自己封装了一下afn的,具体解释以及代码,在这里(http://www.jianshu.com/p/bb98707e5119),不管是刷新还是加载,网络请求成功,就应该先停止停止刷新;[refreshComponent endRefreshing];
第二步,如果获取到的数据条数小于服务器规定的一页的最大条数,说明肯定没有更多数据,那么就需要:[weakSelf.listView.mj_footer endRefreshingWithNoMoreData];,否则,说明可能还有更多数据,这时,就需要:[weakSelf.listView.mj_footer resetNoMoreData];
处理也就是只要处理footview的刷新状态就可以了
其他的情况,就是请求没有返回正确的数据,那么就直接结束刷新就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于加载数据,感觉最容易上手的就是MJRefresh这个加载第三方库了。 记得将MJRefresh导入工程里面,不...
    大冲哥阅读 1,221评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,084评论 25 708
  • 朋友圈里走了一波婚纱照,给圈里的朋友打个底。 最近的事多呀,不晓得怎么下手了。得按什么顺序来处理哩。 气温又要降了...
    水水_6eeb阅读 119评论 0 0
  • 我之前的文章中就提过我喜欢坐火车。其实我是享受在路上的感觉。很想来一次自驾游,可是天时够了,地利人和还差点。...
    金银小姐阅读 301评论 0 0
  • 昔为武界功夫子,今作诗坛吟咏人。 山水倾心犹觉好,风光入眼尚嫌贫。 不愁秋鬓随时老,只爱春情逐日新。 我欲生来万般...
    雪窗_武立之阅读 368评论 2 4