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

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