Ios refreshView 上拉重新整理
阿新 • • 發佈:2019-01-06
匯入標頭檔案:
這些匯入的檔案是第三方的 可以去網上載一個EGO。
//#import "PSCollectionView.h"
//#import "PullPsCollectionView.h"
//#import "EGORefreshTableHeaderView.h"
新增代理<EGORefreshTableHeaderDelegate>
{
EGORefreshTableHeaderView *_refreshTableView;
BOOL _reloading;
}
在viewDidLoad中 初始化
if (_refreshTableView == nil) { //初始化下拉重新整理控制元件 EGORefreshTableHeaderView *refreshView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.CollectionView.bounds.size.height, self.view.frame.size.width, self.CollectionView.bounds.size.height)]; refreshView.delegate = self; //將下拉重新整理控制元件作為子控制元件新增到UITableView中 [self.CollectionView addSubview:refreshView]; _refreshTableView = refreshView; [refreshView release]; }
//--------上拉重新整理開始重新載入時呼叫的方法 - (void)reloadTableViewDataSource{ _reloading = YES; //開始重新整理後執行後臺執行緒,在此之前可以開啟HUD或其他對UI進行阻塞 [NSThread detachNewThreadSelector:@selector(doInBackground) toTarget:self withObject:nil]; } //完成載入時呼叫的方法 - (void)doneLoadingTableViewData{ NSLog(@"doneLoadingTableViewData"); _reloading = NO; [_refreshTableView egoRefreshScrollViewDataSourceDidFinishedLoading:self.CollectionView]; //重新整理表格內容 [self.CollectionView reloadData]; } #pragma mark Background operation //這個方法運行於子執行緒中,完成獲取重新整理資料的操作 -(void)doInBackground { if ( self.videos.count>0) { [self.videos removeAllObjects]; } NSLog(@"doInBackground"); // self XMLData:(UIButton *) [_CollectionView reloadData]; [NSThread sleepForTimeInterval:3]; //後臺操作執行緒執行完後,到主執行緒更新UI [self performSelectorOnMainThread:@selector(doneLoadingTableViewData) withObject:nil waitUntilDone:YES]; } #pragma mark - #pragma mark EGORefreshTableHeaderDelegate Methods //下拉被觸發呼叫的委託方法 -(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view { [self reloadTableViewDataSource]; } //返回當前是重新整理還是無重新整理狀態 -(BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view { return _reloading; } //返回重新整理時間的回撥方法 -(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view { return [NSDate date]; } #pragma -mark UIScrollViewDelegate Methods //滾動控制元件的委託方法 -(void)scrollViewDidScroll:(UIScrollView *)scrollView { [_refreshTableView egoRefreshScrollViewDidScroll:scrollView]; } -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { [_refreshTableView egoRefreshScrollViewDidEndDragging:scrollView]; }