1.将QuartzCore.framework加入到项目中
2.将EGOTableViewPullRefresh加入项目中
在头文件中加入一下内容:
@interface LBQViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UIScrollViewDelegate,EGORefreshTableHeaderDelegate> {
EGORefreshTableHeaderView *_refreshHeaderView;
BOOL _reloading;
}
- (void)reloadTableViewDataSource;
- (void)doneLoadingTableViewData;
在实现文件中加入如下代码:
- (void)viewWillAppear:(BOOL)animated {
if (_refreshHeaderView==nil) {
// 模拟器设置成3.5的屏否则刷新条距离cell很远
EGORefreshTableHeaderView* view=[[EGORefreshTableHeaderView alloc]initWithFrame:CGRectMake(0.0f, -self.tableView.bounds.size.height, self.tableView.frame.size.width, self.view.bounds.size.height)];
view.delegate=self;
[self.tableView addSubview:view];
_refreshHeaderView=view;
}
// 最后一次更新时间
[_refreshHeaderView refreshLastUpdatedDate];
}
- (void)reloadTableViewDataSource
{
NSLog(@"==开始加载数据");
_reloading=YES;
// 异步加载数据,不影tableView动作
[NSThread detachNewThreadSelector:@selector(doInBackground) toTarget:self withObject:nil];
}
- (void)doneLoadingTableViewData
{
NSLog(@"==加载万数据");
_reloading=NO;
[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];
[self.tableView reloadData];
}
//这个方法运行于子线程中,完成获取刷新数据的操作
-(void)doInBackground
{
NSLog(@"filePath = %@",filePath);
NSFileManager* fm=[NSFileManager defaultManager];
if (![fm fileExistsAtPath:filePath]) {
[fm createFileAtPath:filePath contents:nil attributes:nil];
}
[fm release];
newarr = [[NSMutableArray alloc]initWithArray:[NSKeyedUnarchiver unarchiveObjectWithFile:filePath]];
[NSThread sleepForTimeInterval:2];
//后台操作线程执行完后,到主线程更新UI
[self performSelectorOnMainThread:@selector(doneLoadingTableViewData) withObject:nil waitUntilDone:YES];
}
#pragma mark UIScrollViewDelegate
//刷新显示界面
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
//在这个方法里判断是不是正在加载
[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];
}
//刷新数据入口
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
//在这个方法里,判断拖动的距离是不是大于65像素
[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];
}
/*
- (void)refreshLastUpdatedDate;
- (void)egoRefreshScrollViewDidScroll:(UIScrollView *)scrollView;
- (void)egoRefreshScrollViewDidEndDragging:(UIScrollView *)scrollView;
- (void)egoRefreshScrollViewDataSourceDidFinishedLoading:(UIScrollView *)scrollView;
*/
#pragma mark EGORefreshTableHeaderDelegate Methods
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view {
[self reloadTableViewDataSource];
}
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view {
return _reloading;
}
//返回最后一次刷新的时间
- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view {
return [NSDate date];
}