MJRefresh 3.1.10 基本使用方法

作者: iOS_Gato_老猫 | 来源:发表于2016-12-29 15:10 被阅读323次

MJRefresh 3.1.10

最近更新了一下pod 发现MJ方法 以前的都不能用了 哎呀卧槽 这可咋办。
赶紧找找攻略 发现都比较老了没有一个比较新的
索性下载官方demo 自己研究一下吧
官方链接 MJ_git 点我就对了

好了 废话不说 开始pod MJ吧

本文主要讲的是 Mj3.1.10版本 基础使用方法

一 初始化上拉刷新,下拉加载 (最基础方法 需要更深层次的请往下看)

上拉刷新
// 马上进入刷新状态
    [self.tableView.mj_header beginRefreshing];

这个方法一般可以写在 -(void)viewWillAppear:(BOOL)animated 里面

下面是初始化

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        [self loadNewData]; //这不用说了吧 这就是上拉刷新时候走的方法
    }];
}

#pragma mark 下拉刷新数据
- (void)loadNewData
{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MJDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 刷新表格
        [tableView reloadData];
        
        // 拿到当前的下拉刷新控件,结束刷新状态
        [tableView.mj_header endRefreshing];
    });
}

这事最基本的方法 也就是 刷新的时候 显示刷新文字 时间

WeChat_1482993541.jpeg
下拉加载
[self.GatoTableview.mj_footer resetNoMoreData];

切记 下拉加载的初始化跟刷新可不一样 不要搞混了 不然会出现 下拉刷新 一直刷新不能停止的状况

下面是初始化

- (void)viewDidLoad {
    [super viewDidLoad];
   self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        [self loadMoreData];
    }];
}

#pragma mark 上拉加载数据
- (void)loadMoreData
{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MJDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 刷新表格
        [tableView reloadData];
        
        // 拿到当前的上拉刷新控件,结束刷新状态
        [tableView.mj_footer endRefreshing];
    });
}

好了 基础的使用 到这里就结束了

下面开始说一些常用状态


(1)上拉加载的时候 如果数据加载完 想让提示语变成 “已经全部加载完毕”
就需要在 上拉加载里面判断 当没有更多数据的时候

[self.GatoTableview.mj_footer endRefreshingWithNoMoreData];

(2)需要自定义刷新显示问题 图片 之类的
那就不能用MJ自带的初始化方法

- (void)viewDidLoad {
    [super viewDidLoad];
 MJChiBaoZiHeader *header = [MJChiBaoZiHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
    
    // 隐藏时间
    header.lastUpdatedTimeLabel.hidden = YES;

    // 隐藏状态
    header.stateLabel.hidden = YES;
    
    // 马上进入刷新状态
    [header beginRefreshing];
    
    // 设置header
    self.tableView.mj_header = header;

//---------------------------------------------------------------------------------------------------------------
     MJChiBaoZiFooter *footer = [MJChiBaoZiFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
    
    // 当上拉刷新控件出现50%时(出现一半),就会自动刷新。这个值默认是1.0(也就是上拉刷新100%出现时,才会自动刷新)
    //    footer.triggerAutomaticallyRefreshPercent = 0.5;
    
    // 隐藏刷新状态的文字
    footer.refreshingTitleHidden = YES;
    
    // 设置footer
    self.tableView.mj_footer = footer;
}

WeChat_1482994510.jpeg

看到下方的小脑袋了没? 就是 只有小脑袋没有图片

当然 也可以有图片有文字 方法如下

- (void)viewDidLoad {
    [super viewDidLoad];
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
    self.tableView.mj_header = [MJChiBaoZiHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
    
    // 马上进入刷新状态
    [self.tableView.mj_header beginRefreshing];
//---------------------------------------------------------------------------------------------------------------
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
    self.tableView.mj_footer = [MJChiBaoZiFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
}

(3)下面 就说一下 大家最关心的 也是最常用的 自定义加载文字 (虽然我比较懒得改)
- (void)viewDidLoad {
    [super viewDidLoad];

 // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
    MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
    
    // 设置文字
    [header setTitle:@"未下拉时候显示的文字" forState:MJRefreshStateIdle];
    [header setTitle:@"下拉以后 没松开时候显示的文字" forState:MJRefreshStatePulling];
    [header setTitle:@"松开以后 刷新时候显示的文字" forState:MJRefreshStateRefreshing];
    
    // 设置字体
    header.stateLabel.font = [UIFont systemFontOfSize:15];
    header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];

    // 设置颜色
    header.stateLabel.textColor = [UIColor redColor];
    header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
    
    // 马上进入刷新状态
    [header beginRefreshing];
    
    // 设置刷新控件
    self.tableView.mj_header = header;


    // 添加默认的上拉刷新
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
    MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
    
    // 设置文字
    [footer setTitle:@"为刷新时候显示的文字" forState:MJRefreshStateIdle];
    [footer setTitle:@"正在刷新时候显示的文字." forState:MJRefreshStateRefreshing];
    [footer setTitle:@"没有更多数据时候显示的文字" forState:MJRefreshStateNoMoreData];

    // 设置字体
    footer.stateLabel.font = [UIFont systemFontOfSize:17];

    // 设置颜色
    footer.stateLabel.textColor = [UIColor blueColor];
    
    // 设置footer
    self.tableView.mj_footer = footer;
}

(4)一般情况下 上拉加载的文字 都是紧贴着数据的 某些时候我们需要他永远在页面最下方 应该怎么办呢?
- (void)viewDidLoad {
 // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
    self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
    // 设置了底部inset
    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 30, 0);
    // 忽略掉底部inset
    self.tableView.mj_footer.ignoredScrollViewContentInsetBottom = 30;
}

只要这样初始化就能达到效果了

不知道大家发现了没有

用了这么多不同的自定义 其实 所有的自定义都是在初始化的时候进行更改 而不管怎么更改 实用的方法都是相同呢?

好了 常用的基础方法 已经介绍完毕了

如果大家有什么好的想法或者问题 欢迎随时留言联系我

Ps。手打文章 虽然欢迎各位大大转载 但是转载请标注来源 多谢。

相关文章

网友评论

    本文标题:MJRefresh 3.1.10 基本使用方法

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