此次介紹一個下拉刷新的視圖函數
//第三方開源庫 封裝了下拉刷新的視圖(把它加到UITableView上,會隨着拖拽tableview發生不一樣的變化)學習
下拉的刷新是利用了一個第三方的開源庫 進去看了一下發現沒有看懂,這才以爲原來還須要更多的學習,言歸正傳,下邊開始記錄學習的過程。spa
首先導入第三方開源庫,這個文件我放在了園內的文件里名字叫day14source.zip 在這個第三方開源庫裏 有它本身規定的圖片用來顯示下拉的時候的圖片變化代理
在實現這個下拉實現的前提是:必須得先建一個可以正常運行的tableView視圖,而後再這個視圖的基礎之上添加代碼。code
一、在頭文件上添加第三方頭文件 並封裝協議對象
#import "EGORefreshTableHeaderView.h"blog
EGORefreshTableHeaderDelegate繼承
在這個下拉視圖的代碼中 有下拉tableview 而後讓下拉視圖產生響應,在這個過程當中會有scrowllview的代理響應(tableView是一個特殊的scrollView)圖片
2.聲明一個下拉刷新的視圖對象ip
EGORefreshTableHeaderView * _refreshView;
在初始化界面的時候建立 EGORefreshTableHeaderView 對象
1 _refreshView=[[EGORefreshTableHeaderView alloc]initWithFrame:CGRectMake(0, -_tableView.frame.size.height, _tableView.frame.size.width, _tableView.frame.size.height)]; 2 //設置刷新視圖的代理 3 _refreshView.delegate=self; 4 [_tableView addSubview:_refreshView]; 5 //顯示最近一次刷新時間 6 [_refreshView refreshLastUpdatedDate];
先總得說明一下思路 建立一個下拉對象EGPRefreshTableHeaderView 初始化後設置代理,由於它的代理EGORefreshTableHeaderDelegate 是繼承scrollview代理的,因此不用再添加scrollview的代理了,EGPRefreshTableHeaderView初始化放在在當前tableview上方,使用asi刷新數據以後 在finished的方法上設置刷新結束的標誌 調用(刷新對象)egoRefreshScrollViewDataSourceDidFinishedLoading:(tabview對象) 的函數 而後代理會調用兩個函數
//經過此方法 來告訴刷新視圖 當前是否正在刷新(當前是否有刷新任務) //返回值爲no 證實當前沒有刷新任務 能夠執行刷新操做 //返回值爲yes 證實當前正在進行刷新的任務 不會再執行刷新操做了 - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view{ return _isRefresh; } //上面的返回值爲NO 執行此方法 refreshView開始執行刷新操做 - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view{ //實現刷新數據的代碼 if (_isRefresh==NO) { _isRefresh=YES;//改變bool值爲yes 標記爲正在刷新 } //從新請求第一頁的數據 [self loadDataWithPage:1]; } //nsdata 用於操做和獲取時間的類 (xxxx年xx月xx日xx時:xx分xx秒) //返回這次刷新操做對應的時間 - (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{ //返回系統的當前的時間 return [NSData data]; }
這樣就能夠實現下拉列表的實現了