导入头文件:
这些导入的文件是第三方的 可以去网上载一个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];
}