iOS MJRefresh的简单实用场景

iOS MJRefresh的简单实用场景

MJRefresh确实是个好用的第三方,也不看看github上有多少star,好吧,废话不多说,之前用MJRefresh时因为自己的愚蠢..遇到了个小bug,今天呢解决了,就写出来以免再犯.

首先在cocoapods里引入它,我这个是pod ‘MJRefresh’, ‘~>3.1.12’这个版本的.
然后应用在tableView通常或者是collectionView上,在该类中引入MJRefresh.h:

#import <MJRefresh.h>

然后我们再来设置一些tableView相关的属性:

@interface HomeViewController ()<UITableViewDelegate,UITableViewDataSource>

{
    UITableView *tableView;//这是我们的列表
}
@end
#define DEVICE_SIZE [UIScreen mainScreen].bounds.size

@implementation HomeViewController
#pragma mark --创建tableView--
- (void)creatTableView
{
    tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, DEVICE_SIZE.width, DEVICE_SIZE.height) style:UITableViewStyleGrouped];
    tableView.delegate = self;
    tableView.dataSource = self;

    tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];//这个是将MJRefresh添加到tableView上来的

    [tableView registerClass:[PowerStationTableViewCell class] forCellReuseIdentifier:@"sectionOneCell"];
    [tableView registerNib:[UINib nibWithNibName:@"NearbyPowerStationTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"sectionTwoCell"];

    [self.view addSubview:tableView];
}

其中loadNewData这个方法是用来加载数据的方法,我们可以在这个方法里对网络进行请求.

那我们什么时候来触发这个方法呢?就要利用tableView所继承的scrollView的代理方法了.

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (!decelerate)
    {
        if(scrollView.contentOffset.y<-114)
        {
            // 马上进入刷新状态
            [tableView.mj_header beginRefreshing];           

        }
    }

}

说明:这个代理方法是滚动视图停止拖拽时调用的方法,因为我的tableView正常状态下的y轴偏移量是-64,所以我让它偏移量小于-114时才可以刷新,decelerate代表tableView是否开始减速.

一般在网络请求得到回调数据的时候来对tableView进行数据的刷新:

[tableView reloadData];
[tableView.mj_header endRefreshing];//于是我们可以在这里使下拉刷新的动画停下来

这样一来,对于普通的列表刷新场景,按照这个流程,基本是不会出错的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值