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