【iOS开发】---- 下拉刷新(附Demo)

下拉刷新实现步骤如下:

1.下载EGORefreshTableHeaderView源码(下面的Demo链接中有);

2.将源码拽入工程中,引入框架:QuartzCore.framework,还有引入箭头资源图片(Demo中有,你也可以自己做):

不引入图片下拉不会有箭头显示的。

3.新建一个控制器类实现下拉刷新,类继承于UITableViewController。

4.初始化下拉刷新的视图:

    refreshView = [[EGORefreshTableHeaderView alloc]  initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];
    refreshView.delegate = self;
    //下拉刷新的控件添加在tableView上
    [self.tableView addSubview:refreshView];

5.下拉刷新的代理方法,注释如下:

#pragma mark - EGORefreshTableHeaderDelegate
//出发下拉刷新动作,开始拉取数据
- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view
{
    [self reloadData];
}
//返回当前刷新状态:是否在刷新
- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view
{
    return reloading;
}
//返回刷新时间
-(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view
{
    return [NSDate date];
}

下面是请求数据的函数reloadData实现:

//请求数据
-(void)reloadData
{
    reloading = YES;
    //新建一个线程来加载数据
    [NSThread detachNewThreadSelector:@selector(requestData)
                             toTarget:self
                           withObject:nil];
}

-(void)requestData
{
    NSArray *arr = @[@"柳眉",@"李倩梅"];
    [self.dataArr addObjectsFromArray:arr];
    sleep(3);
    //在主线程中刷新UI
    [self performSelectorOnMainThread:@selector(reloadUI)
                           withObject:nil
                        waitUntilDone:NO];
}

dataArr是表格的数据源。数据请求完毕之后就要刷新界面,实现与注释如下所示:

-(void)reloadUI
{
	reloading = NO;
    //停止下拉的动作,恢复表格的便宜
	[refreshView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];
    //更新界面
    [self.tableView reloadData];
}

另外还要实现UIScrollview的两个代理,注释已写明:

#pragma mark - UIScrollView

//此代理在scrollview滚动时就会调用
//在下拉一段距离到提示松开和松开后提示都应该有变化,变化可以在这里实现
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [refreshView egoRefreshScrollViewDidScroll:scrollView];
}
//松开后判断表格是否在刷新,若在刷新则表格位置偏移,且状态说明文字变化为loading...
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    [refreshView egoRefreshScrollViewDidEndDragging:scrollView];
}

好了,到这里我们就基本实现了下拉刷新,还有表格的代理我就不写了,需要demo可以去这里下载(如果有错误,欢迎指正,大家共同学习)

下拉刷新Demo(请猛击这里)



你可能感兴趣的:(【iOS开发】,下拉刷新)