使用EGOTableViewPullRefresh實現下拉刷新

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章