1.下载二次封装好的AFN、SDWebImage。导入第三方库....
地址:http://pan.baidu.com/s/1gf1W22Z
pod 'SDWebImage'
pod 'AFNetworking'
pod 'MJExtension'
pod 'YYKit'
2.创建APIConfig.h文件(接口地址)
将所给的接口文件进行定义
#define SERVER_HOST @"http://service.(…………).com"
3.创建一个BaseHandler文件(继承与NSObject) 并定义Block 块 来进行传值
//定义一个Block 来处理完成事件
typedef void(^CompleteBlock)();
//定义一个Block 来处理事件成功 返回数据
typedef void(^SuccessBlock)(id obj);
//定义一个Block 来处理事件失败 返回数据错误信息
typedef void(^FailedBlock)(id obj);
4.在展示层定义 Model (可以使用JSONExport 将JSON文件转为Model)熟悉JOSN文件
6.创建Handler文件 继承于(BaseHandler)
在.h文件中写一个方法(网络请求成功/失败)
+(void)excuteGet(HotLiveTask)WithSuccedd:(SuccessBlock)success failed:(FailedBlock)failed;
在.m文件中导入 Model 里的最上层文件、导入#import "HttpTool.h"
实现定义的方法
+(void)excute(GetHotLive)TaskWithSuccedd:(SuccessBlock)success failed:(FailedBlock)failed{
[HttpTool getWithPath:(API_HotLive) params:nil success:^(id json) {
if ([json[@"(dm_error)"] integerValue]) {//如果返回错误 打印数据
failed(json);
}
else否则
{
//如果返回信息正确
//进行数据解析
NSArray * (lives) = [(SXTLive Model文件最上层) mj_objectArrayWithKeyValuesArray:json[@"(lives)"]];
success(lives);//返回正确信息
}
} failure:^(NSError *error) {
failed(error);//返回错误信息
}];
}
7.在view的展示层里边进行数据赋值
在.h里导入Model 最上层数据
定义属性@property(nonatomic,strong)SXTLive(Model最上层) * live;
在.m里实现方法
-(void)setLive:(SXTLive *)live{
_live = live;
//例子示范
[self.headView downloadImage:[NSString stringWithFormat:@"%@",self.live.creator.portrait] placeholder:@"default_room"];
[self.bigImgView downloadImage:[NSString stringWithFormat:@"%@",self.live.creator.portrait] placeholder:@"default_room"];
self.nameLabel.text = live.creator.nick;
self.locationLabel.text = live.city;
self.onLine.text = [@(live.onlineUsers) stringValue];
}
//在这个方法里可以对图片进行圆角设置
- (void)awakeFromNib {
[super awakeFromNib];
self.headView.layer.cornerRadius = CGRectGetWidth(self.headView.frame) / 2;
self.headView.layer.masksToBounds = YES;
}
8.在ViewController(继承UITableViewController)里进行处理
.m内容:
#import "RZKLiveHandler.h"
#import "RZKLiveCell.h"
#import "RZKPlayerViewController.h"
static NSString * identifiere = @"RZKliveCell";
@interface RZKHotViewController ()<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,strong)NSMutableArray * datalist;
@end
@implementation RZKHotViewController
//行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.datalist.count;
}
//cell 内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
RZKLiveCell * cell = [tableView dequeueReusableCellWithIdentifier:identifiere];
cell.live = self.datalist[indexPath.row];
return cell;
}
//cell跳转
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// SXTLive * live = self.datalist[indexPath.row];
RZKPlayerViewController * player = [[RZKPlayerViewController alloc]init];
player.live = self.datalist[indexPath.row];
[self.navigationController pushViewController:player animated:YES];
}
//cell 行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 70 + self.view.bounds.size.width+10;
}
//数据源
-(NSMutableArray *)datalist{
if (!_datalist) {
_datalist= [NSMutableArray array];
}
return _datalist;
}
//加载视图
- (void)viewDidLoad {
[super viewDidLoad];
[self initUI];
[self LoadData];
}
-(void)initUI{
//将xib 文件 赋值给cell
[self.tableView registerNib:[UINib nibWithNibName:@"RZKLiveCell" bundle:nil] forCellReuseIdentifier:identifiere];
}
-(void)LoadData{
[RZKLiveHandler excuteGetHotLiveTaskWithSuccedd:^(id obj) {
//数据赋值给数据源
[self.datalist addObjectsFromArray:obj];
NSLog(@"%@",self.datalist);
//刷新表格
[self.tableView reloadData];
} failed:^(id obj) {
NSLog(@"%@",obj);
}];
}