使用EGOTableViewPullRefresh实现下拉刷新

本文介绍如何使用EGORefreshTableHeaderView组件在iOS应用中实现下拉刷新功能。具体步骤包括将QuartzCore.framework和EGORefreshTablePullRefresh库加入项目,并在控制器中设置代理和回调方法来触发数据加载及更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值