1. 程式人生 > >Ios refreshView 上拉重新整理

Ios refreshView 上拉重新整理

匯入標頭檔案:

這些匯入的檔案是第三方的 可以去網上載一個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];
}