當前位置:成語大全網 - 書法字典 - ios如何在沒有scrollview視圖的情況下讓tableview下拉刷新代理方法?

ios如何在沒有scrollview視圖的情況下讓tableview下拉刷新代理方法?

1.在TableView中,我們壹打開軟件,就調用下拉刷新事件。

- (void)viewDidLoad {

【超級viewDidLoad】;

//集成刷新控制

[自我設置刷新];

}

/**

*集成下拉刷新

*/

-(void)設置刷新

{

//1.添加刷新控件

UIRefreshControl * control =[[UIRefreshControl alloc]init];

[control add target:self action:@ selector(refreshStateChange:)for control events:UIControlEventValueChanged];

[self . table view addSubview:control];

//2.立即進入刷新狀態不會觸發UIControlEventValueChanged事件。

[控制開始刷新];

// 3.加載數據

【自我刷新狀態變化:控制】;

}

2.接下來,我們將實現refreshStateChange方法,該方法顯示數據並關閉下拉刷新。

/**

* UIRefreshControl進入刷新狀態:加載最新數據。

*/

-(void)refreshStateChange:(UIRefreshControl *)控件

{

// 3.發送請求

AFHTTPRequestOperationManager * mgr =[AFHTTPRequestOperationManager manager];

[mgr get:@ "/2/status/public _ timeline . JSON "參數:nil success:^(afhttprequestoperation * operation,NSDictionary *responseObject){

//1.獲取數據、處理數據並將數據傳遞給tableView,例如:

//將最新的微博數據添加到總組前面。

//ns range range = nsmakerage(0,newstatuses . count);

//NSIndexSet * set =[NSIndexSet indexSetWithIndexesInRange:range];

//[self . status insert objects:newStatuses at indexes:set];

//2.刷新表格

[self . table view reload data];

// 3.結束刷新

[控件結束刷新];

} failure:^(afhttprequestoperation *操作,nserror *錯誤){

//結束刷新刷新。為了避免網絡加載失敗,總是顯示刷新狀態錯誤。

[控件結束刷新];

}];

}

上拉刷新

上拉刷新通常用於尋呼請求。拉到底部後,自動加載下壹頁。我們以加載新浪微博數據為例。

首先,因為下載和加載更多的數據是壹個不變的布局控件,我們將使用xib來實現它。

HWLoadMoreFooter.h

#導入& ltui kit/ui kit . h & gt;

@ interface HWLoadMoreFooter:ui view

+(instancetype)頁腳;

@end

HWLoadMoreFooter.m

#import "HWLoadMoreFooter.h "

@實現HWLoadMoreFooter

+(實例類型)頁腳

{

return[[[ns bundle main bundle]loadNibNamed:@ " HWLoadMoreFooter " owner:nil options:nil]last object];

}

@end

接下來,我們設置壹個名為HWLoadMoreFooter的xib。

接下來,您需要設置以下三個位置:

然後在框中拖動壹個標簽,並將標簽設置為填充整個視圖。

最後,單擊下面的紅框來更新框架。

xib建好之後,我們來實現上拉刷新代碼。

2.實現代碼。

1.在TabelView中加載時,首先加載控件。

- (void)viewDidLoad {

【超級viewDidLoad】;

//集成下拉刷新控件

[self setup prefresh];

//集成上拉刷新控制

[self setup down refresh];

}

2.集成上拉刷新方法

/**

*集成上拉刷新

*/

-(void)setupDownRefresh

{

HWLoadMoreFooter * footer =[HWLoadMoreFooter];

footer.hidden = YES

self . table view . tablefooterview = footer;

}

3.異步數據請求方法

- (void)加載更多狀態

{

// 1.請求管理器

AFHTTPRequestOperationManager * mgr =[AFHTTPRequestOperationManager manager];

// 2.拼接請求參數

HW account * account =[HW account tool account];

NSMutableDictionary * params =[NSMutableDictionary字典];

params[@ " access _ token "]= account . access _ token;

//拿出最後壹條微博(最新的微博,ID最大的微博)。

HW status * last status =[self . status last object];

if (lastStatus) {

//如果指定該參數,則返回ID小於等於max_id的微博,默認值為0。

// id數據壹般比較大。如果壹般轉換成整數,最好是long long類型。

long long maxId = last status . idstr . longlong value-1;

params[@ " max _ id "]= @(maxId);

}

// 3.發送請求

[mgr get:@ "/2/status/friends _ timeline . JSON "參數:params success:^(afhttprequestoperation * operation,NSDictionary *responseObject) {

//將“微博字典”數組轉換為“微博模型”數組。

NSArray * new status =[HW status objectArrayWithKeyValuesArray:response object[@ " status "]];

//在總組末尾添加更多微博數據。

[self . status addObjectsFromArray:newStatuses];

//刷新表格

[self . table view reload data];

//結束刷新(隱藏頁腳)

self . table view . tablefooterview . hidden = YES;

} failure:^(afhttprequestoperation *操作,nserror *錯誤){

HWLog(@“請求失敗-%@”,錯誤);

//結束刷新

self . table view . tablefooterview . hidden = YES;

}];

}

4.實現scrollViewDidScroll

-(void)scroll viewdidscroll:(ui scroll view *)scroll view

{

//scroll view = = self . table view = = self . view

//如果tableView中沒有數據,直接返回。

if(self . status . count = = 0 | | self . table view . tablefooterview . is hidden = = NO)返回;

CG float offsetY = scroll view . content offset . y;

//最後壹個單元格完全顯示時contentOffset的y值。

CG float judgeOffsetY = scroll view . contentsize . height+scroll view . content inset . bottom-scroll view . height-self . table view . tablefooterview . height;

if(off sety & gt;= judgeOffsetY) {//最後壹個單元格完全進入視野。

//顯示頁腳

self . table view . tablefooterview . hidden = NO;

//加載更多微博數據。

[self loadMoreStatus];

}

}