ios AFN解析数据和MJ刷新

采用MVC
Controller 内容:

#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT ([UIScreen mainScreen].bounds.size.height - 64)

#import "TuiJianViewController.h"
#import "HomePageModel.h"
#import "HomePageTableViewCell.h"
//AFN头文件
#import "AFNetWorking/AFNetWorking.h"
#import "TuiJianXQViewController.h"
//MJ头文件
#import "MJRefresh.h"

@interface TuiJianViewController ()
@property(nonatomic,strong) UITableView * tableView;
@property(nonatomic,strong) NSMutableArray * dataSource;

@end

@implementation TuiJianViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //初始化数据
    [self initData];
    //创建列表
    [self createTableView];
    //加载数据
    [self loadData];
}
#pragma mark 初始化数据
- (void)initData{
    //初始化数据源
    self.dataSource = [NSMutableArray array];
    //初始化页数
    //    self.page = 1;//offset
}
#pragma mark 创建列表
- (void)createTableView{
    //继承于UIScrollView的控件均具有自动布局效果,即自动调节坐标
    //PCH 预编译文件
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT - 64) style:UITableViewStylePlain];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    [self.view addSubview:self.tableView];
    //注册TabelViewCell
    //XIB形式创建的TableViewCell
    [self.tableView registerNib:[UINib nibWithNibName:@"HomePageTableViewCell" bundle:nil] forCellReuseIdentifier:@"HomePage"];
    //添加下拉刷新与上拉加载
    [self addHeaderRefresh];
    [self addFooterRefresh];
   
}
- (void)addHeaderRefresh{
    
    MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingBlock:^{
        //1、重置页数
        // self.page = 1;
        //2、清空数据源
        [self.dataSource removeAllObjects];
        //3、重新发生网络请求
        [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:@"敌军还有30秒到达战场" forState:MJRefreshStateRefreshing];
    self.tableView.mj_header = header;
}
- (void)refreshDown{
    NSLog(@"下拉刷新触发");
}
- (void)addFooterRefresh{
    //上拉刷新
    MJRefreshAutoGifFooter * footer = [MJRefreshAutoGifFooter footerWithRefreshingBlock:^{
        //1、页数增加
        //self.page++;
        //2、重新请求数据
        [self loadData];
    }];
    NSArray * imageArr = @[[UIImage imageNamed:@"loading_teemo_1"],[UIImage imageNamed:@"loading_teemo_2"]];
    [footer setImages:imageArr forState:MJRefreshStateRefreshing];
    self.tableView.mj_footer = footer;
}
#pragma mark TableViewDel
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataSource.count;
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    //接受TableViewCell注册
    HomePageTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"HomePage" forIndexPath:indexPath];
    //加入防止下拉刷新崩溃判断
    if (self.dataSource.count <= 0) {
        return cell;
    }
    //进行联系数据与视图
    //得到该行的数据模型
    HomePageModel* model = self.dataSource[indexPath.row];
    [cell loadDataFromModel:model];
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 110;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //去除选中停留效果
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    //跳转详情界面
    TuiJianXQViewController * detail = [[TuiJianXQViewController alloc]init];
//    //传值 Block
    HomePageModel * model = self.dataSource[indexPath.row];
    detail.setname = model.setname;
    detail.imageSum = model.imgsum;
    detail.pics = model.pics;
    detail.desc = model.desc;
    //去除标签栏控制器
    detail.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:detail animated:YES];
}

#pragma mark 加载数据
- (void)loadData{
    //显示加载栏
    //[SVProgressHUD showWithStatus:@"加载中..."];
    //创建网络请求
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    //设置默认请求类型(NSData)
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:@"http://c.m.163.com/photo/api/list/0096/54GI0096.json" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        //解析数据
        NSArray * array = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
        
        //遍历数组
        for (NSDictionary * newsDict in array) {
            //建立数据模型存储数据
            HomePageModel * model = [[HomePageModel alloc]init];
            [model setValuesForKeysWithDictionary:newsDict];
            //加入数据源中
            [self.dataSource addObject:model];
        }
        NSLog(@"success");
        
        //刷新UI
        [self.tableView reloadData];
        //去除下拉刷新控件
        [self.tableView.mj_header endRefreshing];
        [self.tableView.mj_footer endRefreshing];
        //去除加载栏
        
        //[SVProgressHUD dismiss];
        //        [SVProgressHUD dismissWithSuccess:@"加载成功"];
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        [self.tableView.mj_header endRefreshing];
        [self.tableView.mj_footer endRefreshing];
        //        [SVProgressHUD dismissWithError:error.localizedDescription];
        //[SVProgressHUD dismiss];
        NSLog(@"error:%@",error);
    }];
    
}


@end

View内容:

//.h内容
//拖控件
@property (weak, nonatomic) IBOutlet UIImageView *Imagea;
@property (weak, nonatomic) IBOutlet UILabel *Titlezi;
@property (weak, nonatomic) IBOutlet UILabel *Foot;
-(void)loadDataFromModel:(HomePageModel *)model;```

```//.m内容:
//导入SDWebImage第三方头文件
#import "UIImageView+WebCache.h"
@implementation HomePageTableViewCell

-(void)loadDataFromModel:(HomePageModel *)model{
    if (model) {
        [self.Imagea sd_setImageWithURL:[NSURL URLWithString:model.clientcover1]];
        self.Titlezi.text = model.setname;
        //self.imgSumLabel.text = [NSString stringWithFormat:@"%@图",model.imgsum];
        self.Foot.text = [NSString stringWithFormat:@"%@评论",model.replynum];
    }
}```

Model内容:
```//  .h内容:
//需要接口的名称,在接口里找
@property(nonatomic,copy)NSString *setname;
@property(nonatomic,copy)NSString *clientcover1;
@property(nonatomic,copy)NSString *setid;
@property(nonatomic,copy)NSString *imgsum;
@property(nonatomic,copy)NSString *replynum;
@property(nonatomic,strong)NSArray * pics;
@property(nonatomic,strong)NSString * desc;```
```//.m内容
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
}```

你可能感兴趣的:(ios AFN解析数据和MJ刷新)