`
sgm881218
  • 浏览: 58315 次
社区版块
存档分类
最新评论

使用EGORefreshTableHeaderView实现下拉刷新

    博客分类:
  • ios
阅读更多

        在使用下拉刷新类库EGORefreshTableHeaderView的时候,将资源文件添加到工程中,也不要忘记添加QuartzCore.framework框架。

         我们用到一个EGOTableViewPullRefresh的开源项目来实现这个功能,先到这里下载源码,下载完成后里面有个Demo是可以直接运行的Xcode工程,然后就是这个开源项目的源码,学习如何使用可以参照Demo。


1.

打开MainViewController.xib文件然后拖入一个UITableViewController并连接DataSource和Delegate,然后在MainViewController.h文件中声明UITableView的协议。

#import   
#import "EGORefreshTableHeaderView.h"  
  
@interface MainViewController : UITableViewController  
{  
    EGORefreshTableHeaderView *_refreshTableView;  
    BOOL _reloading;  
}  
  
@property (strong,nonatomic) NSArray *array;  
  
//开始重新加载时调用的方法  
- (void)reloadTableViewDataSource;  
//完成加载时调用的方法  
- (void)doneLoadingTableViewData;  
  
@end  

 2.

#import "MainViewController.h"  
  
@interface MainViewController ()  
  
@end  
  
@implementation MainViewController  
@synthesize array = _array;  
  
#pragma mark -  
#pragma mark View life cycle  
-(void)viewDidLoad  
{  
    [super viewDidLoad];  
      
    //设置导航条标题  
    self.navigationItem.title = @"Pull Refresh";  
      
    if (_refreshTableView == nil) {  
        //初始化下拉刷新控件  
        EGORefreshTableHeaderView *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;  
        //将下拉刷新控件作为子控件添加到UITableView中  
        [self.tableView addSubview:refreshView];  
        _refreshTableView = refreshView;  
    }  
      
    //初始化用于填充表格的数据  
    NSArray *dataArray = [NSArray arrayWithObjects:@"Ryan",@"Vivi", nil];  
    self.array = dataArray;  
      
    //重新加载表格数据  
    [self.tableView reloadData];  
      
}  
  
-(void)viewDidUnload  
{  
    [super viewDidUnload];  
    _refreshTableView = nil;  
}  
  
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
{  
    return (interfaceOrientation == UIInterfaceOrientationPortrait);  
}  
  
# pragma mark -  
# pragma mark UITableViewDataSource Methods  
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
{  
    return 10;  
}  
  
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
{  
    return [self.array count];  
}  
  
//带头标题的表格设置标题方法  
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section  
{  
    return [NSString stringWithFormat:@"Title %d",section + 1];  
}  
  
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    static NSString *CellIdentifier = @"CellIdentifier";  
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
      
    if (!cell) {  
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];  
    }  
      
    cell.textLabel.text = [self.array objectAtIndex:indexPath.row];  
      
    return cell;  
}  
  
#pragma mark -  
#pragma mark Data Source Loading / Reloading Methods  
//开始重新加载时调用的方法  
- (void)reloadTableViewDataSource{  
    _reloading = YES;  
    //开始刷新后执行后台线程,在此之前可以开启HUD或其他对UI进行阻塞  
    [NSThread detachNewThreadSelector:@selector(doInBackground) toTarget:self withObject:nil];  
}  
       
//完成加载时调用的方法  
- (void)doneLoadingTableViewData{  
    NSLog(@"doneLoadingTableViewData");  
      
    _reloading = NO;  
    [_refreshTableView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];      
    //刷新表格内容  
    [self.tableView reloadData];  
}  
  
#pragma mark -  
#pragma mark Background operation  
//这个方法运行于子线程中,完成获取刷新数据的操作  
-(void)doInBackground  
{  
    NSLog(@"doInBackground");  
      
    NSArray *dataArray2 = [NSArray arrayWithObjects:@"Ryan2",@"Vivi2", nil];  
    self.array = dataArray2;  
    [NSThread sleepForTimeInterval:3];  
      
    //后台操作线程执行完后,到主线程更新UI  
    [self performSelectorOnMainThread:@selector(doneLoadingTableViewData) withObject:nil waitUntilDone:YES];  
}  
  
  
#pragma mark -  
#pragma mark EGORefreshTableHeaderDelegate Methods  
//下拉被触发调用的委托方法  
-(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view  
{  
    [self reloadTableViewDataSource];  
}  
  
//返回当前是刷新还是无刷新状态  
-(BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view  
{  
    return _reloading;  
}  
  
//返回刷新时间的回调方法  
-(NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view  
{  
    return [NSDate date];  
}  
  
#pragma mark -   
#pragma mark UIScrollViewDelegate Methods  
//滚动控件的委托方法  
-(void)scrollViewDidScroll:(UIScrollView *)scrollView  
{  
    [_refreshTableView egoRefreshScrollViewDidScroll:scrollView];  
}  
  
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate  
{  
    [_refreshTableView egoRefreshScrollViewDidEndDragging:scrollView];  
}  
  
@end  

 

 

0
0
分享到:
评论

相关推荐

    ios EGORefreshTableHeaderView 下拉刷新

    总结来说,"ios EGORefreshTableHeaderView"是一个方便实用的下拉刷新解决方案,适用于那些希望在UITableView中快速集成下拉刷新功能的iOS开发者。它的简单易用性、高度定制化以及良好的性能,使其成为许多开发者...

    下拉刷新Demo

    本教程将深入讲解如何实现一个下拉刷新的Demo,主要基于开源中国iOS客户端的学习,涉及协议与委托的设计模式。在这个过程中,我们将探讨以下几个关键知识点: 1. **协议(Protocol)**: 在Objective-C或Swift中,...

    iphone下拉刷新

    "EGORefreshTableHeaderView"是iOS早期流行的一种实现下拉刷新功能的第三方库,它为UITableView提供了这个特性。在这个专题中,我们将深入探讨下拉刷新的工作原理、如何使用EGORefreshTableHeaderView以及相关的iOS...

    下拉刷新,下拉加载

    "EGO"在这里指的是EGORefreshTableHeader,这是一个第三方库,专门用于实现下拉刷新效果。 EGORefreshTableHeader是iOS开发中的一个开源组件,由EgoInfusion开发。这个库提供了一个可自定义的表视图头部视图,当...

    iOS下拉刷新页面 EGORefreshTableHeaderView.zip

    iOS下拉刷新页面 EGORefreshTableHeaderView ,EGORefreshTableHeaderView 是一个在 iOS 上实现向下拉刷新列表的组件。

    IOS下拉刷新列表

    本文将深入探讨如何在iOS中实现下拉刷新功能,主要基于EGORefreshTableHeaderView控件。 首先,EGORefreshTableHeaderView是一个第三方库,它提供了一个简单易用的解决方案来添加下拉刷新功能到UITableView。这个库...

    下拉刷新开源库

    EGORefreshTableHeaderView是一个经典的下拉刷新组件,它通过添加一个可拉伸的头视图来实现刷新效果。使用这个库,开发者可以轻松地将下拉刷新集成到自己的应用中,只需设置好相应的回调,处理数据更新即可。 在...

    EGO下拉刷新

    4. **自定义刷新视图**:EGO下拉刷新库允许开发者自定义刷新指示器的外观,可以通过设置EGORefreshTableHeaderView的子视图来实现。例如,可以改变文字提示、加载动画或者添加自定义图标。 5. **性能优化**:EGO...

    ios下拉刷新uitableview

    本篇文章将深入探讨如何在iOS的`UITableView`中实现下拉刷新。 首先,`UITableView`本身并不直接支持下拉刷新功能,但可以通过第三方库如`EGOTableViewPullRefresh`来实现。`EGOTableViewPullRefresh`是一个轻量级...

    IOS网易新闻下拉刷新demo

    在iOS中,最常用的库之一是EGORefreshTableHeaderView,这是一个流行且易于使用的下拉刷新库,这个"EGOTableViewPullRefresh-master"压缩包很可能包含了它的源代码。 EGORefreshTableHeaderView的工作原理是,它是...

    同时上拉下拉刷新

    EGO(EffortlessGracefulOperations)是一个开源的iOS库,由EgoInfrastructures开发,主要用于实现UITableView的上拉下拉刷新效果。该库以简单易用和高效著称,为开发者提供了优雅的方式来处理数据加载更新。 1. **...

    EGO上拉加载,下拉刷新

    - 设置EGORefreshTableHeaderView:在UITableView的header中添加EGORefreshTableHeaderView,用于下拉刷新。设置适当的回调方法,以便在用户下拉时执行刷新操作。 - 设置EGOPullRefreshView:在UITableView的...

    下拉加载(刷新)下一页效果

    首先,EGORefreshTableHeaderView是一个自定义的UITableViewHeaderFooterView,专门用于实现下拉刷新效果。这个库是由Jeff Huber编写的,他使用Objective-C实现,兼容iOS系统。在项目中引入这个组件,开发者可以轻松...

    打包好的EGORefreshTableHeaderView

    "打包好的EGORefreshTableHeaderView"是一个开源的iOS开发组件,主要用于实现下拉刷新功能。在iOS应用开发中,为了提供更好的用户体验,开发者通常会在表格视图(UITableView)顶端添加一个可下拉的刷新头视图,当...

    ios上提下拉翻页插件

    除了EGORefreshTableHeaderView,还有其他类似的库,如MJRefresh,它提供了更多自定义选项和更简单的API,可以实现上拉加载更多和下拉刷新的功能。这些插件都大大简化了开发者实现滚动刷新功能的过程,使得应用更加...

    RefreshTableView_demo_上拉加载更多_下拉刷新

    http://blog.csdn.net/linzhu0831/article/details/7547337,文章对应demo,简单的下拉刷新和上拉加载更多列表的实现,基于著名的Devin Doty EGORefreshTableHeaderView类进行改写的。刷新/加载更多是利用定时器模拟...

    IOS应用源码——下拉动态加载.zip

    【标题】"IOS应用源码——下拉动态加载.zip" 提供的是一个iOS应用程序的源代码,主要功能是实现下拉刷新(Pull-to-Refresh)的功能。在iOS开发中,下拉动态加载是一种常见的交互模式,它允许用户通过在列表顶部向下...

    iOS tableview 横向分页刷新 ego实现

    "iOS tableview 横向分页刷新 ego实现"是一个专门针对这个需求的解决方案,它使用了EGORefreshTableHeaderView库来扩展UITableView的功能。 EGORefreshTableHeaderView是一个开源库,最初由EgoInfrastructures开发...

    列表下拉加载更多

    本项目是基于Devin Doty的EGORefreshTableHeaderView类进行改写,实现了下拉刷新和上拉加载更多的功能。 首先,我们要理解Devin Doty的EGORefreshTableHeaderView。这是一个开源的库,专门用于在UITableView中添加...

    scrollview和table下拉刷新(iPhone源代码)

     根据网上开源的代码EGORefreshTableHeaderView(/ios/Pull-To-Refresh-TableView/4f681c096803fa2c63000004),实现简单的tableview下拉刷新和scrollview下拉刷新。还有用Core Graphics画的Gradient背景。 小编注...

Global site tag (gtag.js) - Google Analytics