封装一个继承于UIViewController,可以让子类刷新

用到的三方有MJRefresh

.h

/**声明一个tableView 属性*/

@property (nonatomic, strong) UITableView *tableView;

//设置子类需要请求的参数,这里父类声明,让子类去调用

-(void)settingRequestParams:(NSMutableDictionary *)params;

.m

#import "DPRequest.h"

#import "MetaDataTool.h"

#import "DPAPI.h"

#import "MJRefresh.h"

等等...

//扩展几个属性

//1.存储服务器返回的所有订单(次订单是可变的,要适应上拉加载逻辑)

@property (nonatomic, strong ) NSMutableViewArray *dealArray ;

//2.记录当前的页数

@property (nonatomic, assign) int page;//需要转换类型

//3.记录用户最后(最新)请求对象

@property (nonatomic, strong)DPrequest *latestREquest;

@end

//功能

/*设置参数;

发送请求

获取数据,显示在tableViews上

*/

@implementation

//懒加载dealsArray,让其在用到的时候开空间

-(NSMutableView *)dealsArray {

if(nil ==_dealsArray){

_dealsArray = [NSMutableView array];

}

return  _dealsArray;

}

#pragma mark --创建下拉刷新,上拉加载更多

-(void)addRefreshControl {

//下拉刷新

self.tableView.mj_header =[MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewDeals)];

//添加完成之后,开始刷新

[self.tableView.mj_header beginRefreshing];

//上拉空间(需要加载新数据)

self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreDeals)]; 

//下拉触发方法

-(void)loadNewDeals {

self.page = 1;

//发送网络请求(GET/POST)

[self sendRequestToServer];

}

//上拉触发方法

-(void)loadMoreDeals {

self.page++;//这里加多少需要根据SDK中的要求进行设置

[self sendRequestToserver];

}

#pragma mark --向服务器请求数据

-(void)sendRequestToServer {

//创建可变字典,设置发送请求的参数

NSMutableViewDictionary *mutableDic = [NSMutableDictionary dictionary];

/****************重要***************/

[self settingRequestParams:mutableDic];//在.h中声明的方法,后面可用子类传参数去调用,这样子类就不用谢过多的网络方法

//3.发送请求

self.latestRequest = [api requestWithURL:@"......." params:mutableDic delegate:self];

}

//api协议中需要实现的2个方法(这里如果没有api代理,是否需要用到AFN?,还是自己去设置请求成功失败??)

-(void)request:(DPRequest *)request didFinishloadingWithResult:(id)result {

//如果服务器返回的request请求数据不是最新发送的请求,直接返回

if(self.lastestRequest !=request) {

return ;

}

NSArray *array = [MetaDtataTool parseDealsRequest:result];//会在另一个笔记中介绍MetaDataTool(数据变化工具类)

//把array添加到可变数组中去

[self.dealsArray addobjectsFromArray:arrray];//tableView每次刷新的行数有关

//刷新数据源

[self.tableView reloadData];

//停止下拉刷新

[self.tableView.mj_header endRefreshing];

//停止上拉刷新

[self.tableView.mj_footer endRefreshing];

}

-(void)request:(DPRequest *)request didFailWithError:(NSError *)error {

NSLog(@"返回服务器失败");

//停止下拉刷新

[self.tableView.mj_header endRefreshing];

//停止上拉刷新

[self.tableView.mj_footer endRefreshing];

}

你可能感兴趣的:(封装一个继承于UIViewController,可以让子类刷新)