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 ()<UITableViewDelegate,UITableViewDataSource>
@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
{
}```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容