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];
}