采用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
{
}```