• iOS三方-MJRefresh的使用


    MJRefresh是一款非常好用的上拉下拉第三方库,使用也很简单。github地址: https://github.com/CoderMJLee/MJRefresh 。

    下拉刷新

    官方给过来的例子很简单,默认使用如下:

    复制代码
    self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
       // 进入刷新状态后会自动调用这个block
    }];
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
    self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
    
    // 马上进入刷新状态
    [self.tableView.header beginRefreshing];
    复制代码

    结束下拉刷新:

    // 拿到当前的下拉刷新控件,结束刷新状态
    [self.tableView.header endRefreshing];

    上拉刷新

    官方给过来的默认例子:

    复制代码
    self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
       // 进入刷新状态后会自动调用这个block
    }];
    或
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
    self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
    复制代码

    结束上拉刷新:

    // 拿到当前的上拉刷新控件,结束刷新状态
    [self.tableView.footer endRefreshing];

    从上面,我们可以看到,一般情况下,进行页面的时候,我们会使用下拉刷新,并“马上进入刷新状态”,网络请求完数据后,结束“下拉刷新状态”。但上拉刷新,就不需要“马上进入刷新状态”了。

    更多使用例子,请参数官方给过来的例子,使用起来还是挺方便的。

    下面,给出某个项目的实际使用代码:

    复制代码
    //
    //  NJBillTableViewController.m
    //  NJWisdomCard
    //
    //  Created by admin on 15/8/21.
    //  Copyright (c) 2015年 Weconex. All rights reserved.
    //
    
    #import "NJBillTableViewController.h"
    #import "NJBillListTableviewCell.h"
    #import "Common.h"
    #import "NJHttpToolHandle.h"
    #import "MBProgressHUD+NJ.h"
    #import "NJAccountTool.h"
    #import "MJExtension.h"
    #import "MJRefresh.h"
    #import "NJAccountModel.h"
    #import "NJBillModel.h"
    
    @interface NJBillTableViewController()
    /**
     *  账单模型
     */
    @property (nonatomic, strong) NSMutableArray *billsFrames;
    /**
     *   页数
     */
    @property (nonatomic,assign) int pageIndex;
    
    @end
    
    @implementation NJBillTableViewController
    
    - (NSMutableArray *)billsFrames
    {
        if (!_billsFrames) {
            self.billsFrames = [NSMutableArray array];
        }
        return _billsFrames;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        //集成下拉刷新控件
        [self setupDownRefresh];
        
        //集成上拉刷新控件
        [self setupUpRefresh];
    }
    
    /**
     *  集成上拉刷新控件
     */
    - (void)setupUpRefresh
    {
         self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreBills)];
    }
    
    /**
     *  集成下拉刷新控件
     */
    - (void)setupDownRefresh
    {
        // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
        self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewBills)];
        
        // 马上进入刷新状态
        [self.tableView.header beginRefreshing];
    }
    /**
     *  加载下拉刷新数据
     */
    - (void)loadNewBills
    {
        _pageIndex=1;//默认加载第一页
        [self.billsFrames removeAllObjects];//移除所有的数据
        
        //1.从沙盒里拿用户模型
        NJAccountModel *accountModel=[NJAccountTool accountModel];
        
        // 2.拼接请求参数
        NSMutableDictionary *params = [NSMutableDictionary dictionary];
        params[@"userId"] =accountModel.loginId;//登录号
        params[@"page"] =[NSString stringWithFormat:@"%d",_pageIndex];//页数
        params[@"pagesize"] =[NSString stringWithFormat:@"10"];
        
        //3.发送请求
        [NJHttpToolHandle postWithServiceCode:@"queryAllBalance" params:params success:^(id responseObject) {
            if ([responseObject[@"resultCode"] isEqualToString:@"0000"]) {
                
                //获取value数组
                NSDictionary *dictList = [NSJSONSerialization JSONObjectWithData:[responseObject[@"code"] JSONData] options:NSJSONReadingMutableLeaves error:nil];
             
                // 将 "账单字典"数组 转为 "账单模型"数组
                NSArray *newBills = [NJBillModel objectArrayWithKeyValuesArray:dictList[@"value"]];
                
                // 将最新的账单数据,添加到总数组的最前面
                NSRange range = NSMakeRange(0, newBills.count);
                NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:range];
                [self.billsFrames insertObjects:newBills atIndexes:set];
                //[self.billsFrames insertObjects:newBills atIndex:0];
                //[self.billsFrames insertObjects:newBills atIndexes:0];
                
                // 刷新表格
                [self.tableView reloadData];
                
                // 拿到当前的下拉刷新控件,结束刷新状态
                [self.tableView.header endRefreshing];
            }
            else
            {
                [self.tableView.header endRefreshing];
            }
            
        } failure:^(NSError *error) {
            [self.tableView.header endRefreshing];
        }];
    }
    
    /**
     *  加载上拉刷新数据
     */
    -(void)loadMoreBills
    {
        //1.设置页数
        _pageIndex++;//默认加载第一页
        
        // 2.拼接请求参数
        NSMutableDictionary *params = [NSMutableDictionary dictionary];
        params[@"userId"] =[NJAccountTool accountModel].loginId;//登录号
        params[@"page"] =[NSString stringWithFormat:@"%d",_pageIndex];//页数
        params[@"pagesize"] =[NSString stringWithFormat:@"10"];
        
        //3.发送请求
        [NJHttpToolHandle postWithServiceCode:@"queryAllBalance" params:params success:^(id responseObject) {
            if ([responseObject[@"resultCode"] isEqualToString:@"0000"]) {
                
                //获取value数组
                NSDictionary *dictList = [NSJSONSerialization JSONObjectWithData:[responseObject[@"code"] JSONData] options:NSJSONReadingMutableLeaves error:nil];
                
                // 将 "账单字典"数组 转为 "账单模型"数组
                NSArray *newBills = [NJBillModel objectArrayWithKeyValuesArray:dictList[@"value"]];
                
                // 将更多的账单数据,添加到总数组的最后面
                [self.billsFrames addObjectsFromArray:newBills];
    
                // 刷新表格
                [self.tableView reloadData];
                
                // 拿到当前的下拉刷新控件,结束刷新状态
                [self.tableView.footer endRefreshing];
            }
            else
            {
                [self.tableView.footer endRefreshing];
            }
            
        } failure:^(NSError *error) {
            [self.tableView.footer endRefreshing];
        }];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    #pragma mark - Table view data source
    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NJBillListTableviewCell *cell = [NJBillListTableviewCell cellWithTableView:tableView];
        cell.billModel=self.billsFrames[indexPath.item];
        return cell;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return self.billsFrames.count;
    }
    
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        return 80;
    }
    
    @end
    本内容来自: 超越昨天(学无止境) - http://www.cnblogs.com/xvewuzhijing/
  • 相关阅读:
    go基础笔记-程序流程控制
    Linux:Day14(上) Centos系统安装
    Linux:Day14(上)
    Linux:Day13(上) CentOS系统启动流程
    Linux:Day13(下) GRUB
    Linux:Day12(下) 进程、任务计划
    Linux:Day12(上) 进程
    Linux:Day10 程序包管理
    Linux:Day24(下) samba
    Linux:Day8(下) RAID
  • 原文地址:https://www.cnblogs.com/xvewuzhijing/p/4904629.html
Copyright © 2020-2023  润新知