在很久之前 Twitter一個APP實現了這個下拉式更新的方式。
可是因為沒有對外發表,網路一堆人在詢問,這時github上有個人實現了這個方法。
把他叫做EGOTableViewPullRefresh,之後Facebook App還偷拿去用,因此扯上官司。
廢話不多講,這次當然不是要講如何去用這個Library,而是實現類似Facebook一登入後,取代著螢幕中間有個黑方塊的等待視窗,而是用預設下拉式的更新。
如圖

要實現這個方法,我們需要改進一點EGOTableViewPullRefresh原本的Code
在ViewDidload中,官方例子有下列Code
1 2 3 4 5 6 7 8 9 10
| if (_refreshHeaderView == nil) { EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.rearTableView.bounds.size.height,self.view.frame.size.width, self.rearTableView.bounds.size.height)]; view.delegate = self; [self.rearTableView addSubview:view]; _refreshHeaderView = view; [view release]; } [_refreshHeaderView refreshLastUpdatedDate];
|
再此Code中 我們需先改寫讓一個tableview一進ViewDidload中先下拉到原本EGO預設的更新長度(預設40 height)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| if (_refreshHeaderView == nil) { _refreshHeaderView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.aTableView.bounds.size.height, 320.0f, self.aTableView.bounds.size.height)]; _refreshHeaderView.backgroundColor = [UIColor colorWithWhite:0.812 alpha:1.000]; _refreshHeaderView.delegate = self; [self.aTableView addSubview:_refreshHeaderView]; self.aTableView.showsVerticalScrollIndicator = YES; } [self EnterReloadData]; [_refreshHeaderView setState:EGOOPullRefreshLoading]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.2]; self.aTableView.contentInset = UIEdgeInsetsMake(40.0f, 0.0f, 0.0f, 0.0f); [UIView commitAnimations];
|
因為我下載的EGO沒有把 State這個屬性設成property 所以我們需自行在
EGORefreshTableHeaderView.h
中 加入 @property(nonatomic,assign) EGOPullRefreshState state;
然後再m檔中補上@synthesize state=_state;
上面的程式碼主要就是把 把tableview往下方移動到x軸40的地方
然後去setState 把狀態設成Loading。
我們需自行再加入一個Method
1 2 3 4 5
| -(void)EnterReloadData { [self reloadTableViewDataSource]; }
|
因為EGO delegate的關係,會去自動偵測你拉到40後會去call - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view
這個Delegate Method
這個Method又會去Call reloadTableViewDataSource
所以我們做一個Method叫EnterReloadData
自行去Call
其他方法就跟原本用法差不多了,因為之前改的東西有點多,應該就是這些,有遺漏的請指教。