封裝一個繼承于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];

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容