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.    EGORefreshTableHeaderView *_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.         EGORefreshTableHeaderView *view1 = [[EGORefreshTableHeaderView alloc] 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(doneLoadingTableViewData) withObject: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组建。

然后运行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值