MJ刷新

#import “MJRefresh.h”
#import “AFNetworking.h”
#import “UIKit+AFNetworking.h”
#import “SVProgressHUD.h”//加载栏
#import <UIImageView+WebCache.h>

用cocopods导入pod ‘MJRefresh’ pod ‘SVProgressHUD’ pod ‘SDWebImage’
设置 当前页
@property (nonatomic,assign)int page;
<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)UITableView *table;
@property (nonatomic,strong)NSMutableArray *dataSource;

  • (void)viewDidLoad {
    [super viewDidLoad];
    //初始化数据
    [self initData];

    [self.view addSubview:self.table];

    //添加上拉加载 下拉刷新
    [self addHeaderRefresh];

    [self addFooterRefresh];

    //请求数据
    [self setMyUrl];
    [self loadData];

}

  • (void)initData{
    self.dataSource=[NSMutableArray array];
    //初始化页数
    self.page=1;
    //清空数据源
    [self.dataSource removeAllObjects];
    //重新发送网络请求
    [self setMyUrl];
    [self loadData];
    }

  • (UITableView *)table{
    if (!_table) {
    _table=[[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
    _table.delegate=self;
    _table.dataSource=self;
    }
    //注册单元格
    [_table registerNib:[UINib nibWithNibName:@“BaseTableViewCell” bundle:nil] forCellReuseIdentifier:@“cell”];

    return _table;
    }

  • (void)addHeaderRefresh{
    MJRefreshGifHeader *header=[MJRefreshGifHeader headerWithRefreshingBlock:^{
    //刷新的回调
    self.page = 1;
    [self.dataSource removeAllObjects];
    [self setMyUrl];
    [self loadData];
    }];
    NSArray * imageArr = @[[UIImage imageNamed:@“common_loading_anne_0”],[UIImage imageNamed:@“common_loading_anne_1”]];
    //添加正在刷新中的状态
    [header setImages:imageArr forState:MJRefreshStateRefreshing];
    //闲置状态
    [header setImages:@[[UIImage imageNamed:@“common_loading_anne_0”]] forState:MJRefreshStateIdle];
    [header setTitle:@“马上完成…” forState:MJRefreshStateRefreshing];
    self.table.mj_header=header;
    }

  • (void)addFooterRefresh{
    MJRefreshAutoGifFooter *footer=[MJRefreshAutoGifFooter footerWithRefreshingBlock:^{
    self.page++;
    [self setMyUrl];
    [self loadData];

    }];
    NSArray * imageArr = @[[UIImage imageNamed:@“loading_teemo_1”],[UIImage imageNamed:@“loading_teemo_2”]];
    [footer setImages:imageArr forState:MJRefreshStateRefreshing];
    self.table.mj_footer=footer;
    }

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataSource.count;
    }

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    BaseTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@“cell”];
    if (self.dataSource.count>0) {
    BaseModel *model=self.dataSource[indexPath.row];
    [cell loadDataFromModel:model];
    }
    return cell;
    }

  • (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 100;
    }
    //请求数据

  • (void)loadData{
    //显示加载栏
    [SVProgressHUD showWithStatus:@“加载中”];
    //创建网络请求
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
    //设置默认请求类型(NSData)
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:self.url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {

    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    //解析数据

      NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
      NSArray *resultArr=dic[self.KEY];
      for (NSDictionary *dic in resultArr) {
          //封装Model
          BaseModel
          *model=[[BaseModel alloc]init];
          [model setValuesForKeysWithDictionary:dic];
          [self.dataSource addObject:model];
          
      }
      //刷新ui
      [self.table reloadData];
      //取消刷新控件
      [self.table.mj_footer endRefreshing];
      [self.table.mj_header endRefreshing];
      //去掉加载栏
      [SVProgressHUD dismiss];
    

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    //提示用户
    //取消刷新控件
    [self.table.mj_footer endRefreshing];
    [self.table.mj_header endRefreshing];
    //去掉加载栏
    [SVProgressHUD dismiss];
    }];
    }

  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //点击跳转详情界面
    //去掉选中效果
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
    //跳转界面
    NewsDetailViewController *detail=[[NewsDetailViewController alloc]init];
    //隐藏标签栏控制器
    detail.hidesBottomBarWhenPushed=YES;
    //获取点中单元格的详情url
    BaseModel *model=self.dataSource[indexPath.row];
    detail.urlString=model.url;
    [self.navigationController pushViewController:detail animated:YES];
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值