UITableView下拉刷新页面的实现(有框架)

以前看到facebook,人人和其他的一些应用,很多都使用了下拉列表,列表就重新加载数据的应用.感觉用户体验很好,但是一直没有时间找相应的解决方法,今天终于有时间整理一下代码:

下图是实现的效果图,当用户下拉列表的时候,就出现向上的箭头.

实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh

实现过程很简单,下载相应的demo,然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.在table所在的类中添加如下代码:

  1. #import <UIKit/UIKit.h>   
  2. #import "EGORefreshTableHeaderView.h"   
  3. @interface iphone_navtaViewController UIViewController   
  4. <UITableViewDelegate,UITableViewDataSource,EGORefreshTableHeaderDelegate>{   
  5.     BOOL isflage;   
  6.     IBOutlet UITableView *myTableView;   
  7.    EGORefreshTableHeaderVie*_refreshHeaderView;   
  8.     BOOL _reloading;   
  9.   
  10. @property (nonatomic,retain) UITableView *myTableView;   
  11. (void)reloadTableViewDataSource;   
  12. (void)doneLoadingTableViewData  
  13. @end  
 

实现方法:

  1. #import "iphone_navtaViewController.h"   
  2. @implementation iphone_navtaViewController   
  3. @synthesize myTableView;   
  4. (void)viewDidLoad   
  5.     [super viewDidLoad];   
  6.     if (_refreshHeaderView == nil)   
  7.         EGORefreshTableHeaderVie*view1 [[EGORefreshTableHeaderViealloc] initWithFrame:CGRectMake(0.0f, 10.0f – self.myTableView.bounds.size.height, self.myTableView.frame.size.width, self.view.bounds.size.height)];   
  8.         view1.delegate self;   
  9.         [self.myTableView addSubview:view1];   
  10.         _refreshHeaderView view1;   
  11.         [view1 release];   
  12.       
  13.     [_refreshHeaderView refreshLastUpdatedDate];   
  14.   
  15. (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation   
  16.     return (interfaceOrientation == UIInterfaceOrientationPortrait);   
  17.   
  18. (void)didReceiveMemoryWarning   
  19.     [super didReceiveMemoryWarning];   
  20.   
  21. (void)viewDidUnload   
  22.     self.myTableView=nil;   
  23.     _refreshHeaderView=nil;   
  24.   
  25. (void)dealloc   
  26.     _refreshHeaderView=nil;   
  27.     [self.myTableView release];   
  28.     [super dealloc];   
  29.   
  30. #pragma mark –   
  31. #pragma mark onClick   
  32. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event   
  33.   
  34.       isflage=!isflage;   
  35.     [super.navigationController setNavigationBarHidden:isflage animated:TRUE];  
  36.     [super.navigationController setToolbarHidden:isflage animated:TRUE];   
  37.   
  38. #pragma mark –   
  39. #pragma mark UITableView   
  40. (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView   
  41.     return 1;   
  42.   
  43. (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section   
  44.     return 3;   
  45.   
  46. (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath   
  47.     UITableViewCell* cell [tableView dequeueReusableCellWithIdentifier:@"tag"];   
  48.     if (cell==nil)   
  49.         cell [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle   
  50.                                        reuseIdentifier:@"tag"] autorelease];   
  51.       
  52.     //表格设计   
  53.     return cell;   
  54.   
  55. -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath   
  56.   
  57.     return 100;   
  58.  
  59. #pragma mark –   
  60. #pragma mark Data Source Loading Reloading Methods  
  61. (void)reloadTableViewDataSource{   
  62.     NSLog(@"==开始加载数据");   
  63.     _reloading YES;   
  64.  
  65. (void)doneLoadingTableViewData  
  66.     NSLog(@"===加载完数据");   
  67.     _reloading NO;   
  68.     [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];   
  69.   
  70. #pragma mark –   
  71. #pragma mark UIScrollViewDelegate Methods   
  72. (void)scrollViewDidScroll:(UIScrollView *)scrollView{      
  73.     [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];   
  74.  
  75. (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{   
  76.     [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];   
  77.   
  78. #pragma mark –   
  79. #pragma mark EGORefreshTableHeaderDelegate Methods   
  80. (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{   
  81.     [self reloadTableViewDataSource];   
  82.     [self performSelector:@selector(doneLoadingTableViewDatawithObject:nil afterDelay:3.0];   
  83.  
  84. (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{   
  85.     return _reloading;   
  86.   
  87. (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{   
  88.     return [NSDate date];       
  89.   
  90. @end  
 

一个最重要的步骤,就是要添加QuartzCore.framework组建。

然后运行即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值