码迷,mamicode.com
首页 > 移动开发 > 详细

IOS学习之路十二(UITableView下拉刷新页面)

时间:2015-08-19 20:30:42      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:uitableviewcell   uitableview   ios开发   

今天做了一个下拉刷新的demo,主要用到了 实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh

技术分享

实现很简单下载源代码,加压后把

然后拷贝资源文件和EGORefreshTableHeaderView.h和EGORefreshTableHeaderView.m到相依的工程中.

技术分享

添加QuartzCore.framework组建:

技术分享

在tableview所在的类中添加如下代码:

TableViewController.h
 
[html]   view plain copy print ?
 
  1. #import  < UIKit /UIKit.h >   
  2. #import "EGORefreshTableHeaderView.h"  
  3.   
  4. @interface TableViewController : UITableViewController <UITableViewDataSource ,UITableViewDelegate,EGORefreshTableHeaderDelegate> {  
  5.     BOOL isflage;  
  6.     BOOL _reloading;  
  7.     EGORefreshTableHeaderView *_refreshHeaderView;  
  8.       
  9. }  
  10. @property (strong, nonatomic) IBOutlet UITableView *myTableView;  
  11. //重新加载时调用的的方法  
  12. - (void)reloadTableViewDataSource;  
  13. //完成加载时调用的方法  
  14. - (void)doneLoadingTableViewData;  
  15. @end  

 
 
TableViewController.m
[html]   view plain copy print ?
 
  1. //  
  2. //  TableViewController.m  
  3. //  EGOTableViewPullRefreshDemo  
  4. //  
  5. //  Created by WildCat on 13-8-16.  
  6. //  Copyright (c) 2013年 wildcat. All rights reserved.  
  7. //  
  8.   
  9. #import "TableViewController.h"  
  10.   
  11. @interface TableViewController () < < span   style = "color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;" >EGORefreshTableHeaderDelegate </ span > >   
  12.   
  13. @end  
  14.   
  15. @implementation TableViewController  
  16. @synthesize myTableView;  
  17.   
  18. - (id)initWithStyle:(UITableViewStyle)style  
  19. {  
  20.      self  = [super initWithStyle:style];  
  21.     if (self) {  
  22.         // Custom initialization  
  23.     }  
  24.     return self;  
  25. }  
  26.   
  27. - (void)viewDidLoad  
  28. {  
  29.       
  30.         if ( _refreshHeaderView ==nil) {  
  31.             //初始化下拉刷新空间  
  32.             EGORefreshTableHeaderView * view1 =[[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 10.0f-self.myTableView.bounds.size.height, self.myTableView.bounds.size.width, self.view.bounds.size.height)];  
  33.              view1.delegate  =  self ;  
  34.             [self.myTableView addSubview:view1];  
  35.              _refreshHeaderView  =  view1 ;  
  36.         }  
  37.        
  38.     [_refreshHeaderView refreshLastUpdatedDate];  
  39. }  
  40.   
  41. - (void)viewDidUnload  
  42. {  
  43.     [self setMyTableView:nil];  
  44.      _refreshHeaderView = nil ;   
  45.     [super viewDidUnload];  
  46.      
  47. }  
  48.   
  49. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  50. {  
  51.     return ( interfaceOrientation  == UIInterfaceOrientationPortrait);  
  52. }  
  53. #pragma mark onClick  
  54. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
  55. {  
  56.      isflage =!isflage;  
  57.     [super.navigationController setNavigationBarHidden:isflage animated:TRUE];  
  58.     [super.navigationController setToolbarHidden:isflage animated:TRUE];  
  59. }  
  60. #pragma mark - Table view data source  
  61. -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{  
  62.     return [NSString stringWithFormat:@"标题"];  
  63.   
  64. }  
  65. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
  66. {  
  67.     return 1;  
  68. }  
  69.   
  70. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  71. {  
  72.   
  73.     return 10;  
  74. }  
  75.   
  76. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  77. {  
  78.     static NSString * CellIdentifier  = @"MyCell";  
  79.     UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  80.       
  81.     if ( cell ==nil) {  
  82.          cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];  
  83.     }  
  84.      cell.textLabel.text =[NSString stringWithFormat:@"这是第 %i 行",indexPath.row];  
  85.     return cell;  
  86. }  
  87.   
  88.   
  89.   
  90. #pragma mark - Table view delegate  
  91.   
  92. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
  93. {  
  94.     // Navigation logic may go here. Create and push another view controller.  
  95.     /*  
  96.       < #DetailViewController# >  * detailViewController  = [[ <#DetailViewController# >  alloc] initWithNibName:@" < #Nib name# >" bundle:nil];  
  97.      // ...  
  98.      // Pass the selected object to the new view controller.  
  99.      [self.navigationController pushViewController:detailViewController animated:YES];  
  100.      */  
  101. }  
  102. #pragma mark –  
  103. #pragma mark Data Source Loading / Reloading Methods  
  104. //重新加载时调用  
  105. - (void)reloadTableViewDataSource{  
  106.     NSLog(@"==开始加载数据");  
  107.      _reloading  =  YES ;  
  108. }  
  109.   
  110. //完成加载时调用的方法  
  111.   
  112. - (void)doneLoadingTableViewData{  
  113.     NSLog(@"===加载完数据");  
  114.      _reloading  =  NO ;  
  115.     [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.myTableView];  
  116. }  
  117. #pragma mark –  
  118. #pragma mark UIScrollViewDelegate Methods  
  119. //滚动控件时的委托方法  
  120.   
  121. - (void)scrollViewDidScroll:(UIScrollView *)scrollView{  
  122.     [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];  
  123. }  
  124.   
  125. - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  
  126.     [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];  
  127. }  
  128. #pragma mark –  
  129. #pragma mark EGORefreshTableHeaderDelegate Methods  
  130. //下拉被调用的委托方法  
  131. - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{  
  132.     [self reloadTableViewDataSource];  
  133.     [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];  
  134. }  
  135. //放回当前是刷新还是无刷新状态  
  136. - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{  
  137.     return _reloading;  
  138. }  
  139. //返回刷新时间的回调方法  
  140. - (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{  
  141.     return [NSDate date];  
  142. }  
  143. @end  

这样就可以成功运行了,如果想把加载改为汉语可以在:

EGORefreshTableHeaderView.m 源码中的

- ( void )setState:( EGOPullRefreshState )aState函数的相应位置修改:

[html]   view plain copy print ?
 
  1. - (void)setState:(EGOPullRefreshState)aState{  
  2.       
  3.     switch (aState) {  
  4.         case EGOOPullRefreshPulling:  
  5.               
  6.              _statusLabel.text  =  NSLocalizedString (@"松开可以刷新...", @"Release to refresh status");  
  7.             [CATransaction begin];  
  8.             [CATransaction setAnimationDuration:FLIP_ANIMATION_DURATION];  
  9.              _arrowImage.transform  =  CATransform3DMakeRotation((M_PI / 180.0) * 180.0f, 0.0f, 0.0f, 1.0f);  
  10.             [CATransaction commit];  
  11.               
  12.             break;  
  13.         case EGOOPullRefreshNormal:  
  14.               
  15.             if ( _state  == EGOOPullRefreshPulling) {  
  16.                 [CATransaction begin];  
  17.                 [CATransaction setAnimationDuration:FLIP_ANIMATION_DURATION];  
  18.                  _arrowImage.transform  =  CATransform3DIdentity ;  
  19.                 [CATransaction commit];  
  20.             }  
  21.               
  22.              _statusLabel.text  =  NSLocalizedString (@"下拉刷新...", @"Pull down to refresh status");  
  23.             [_activityView stopAnimating];  
  24.             [CATransaction begin];  
  25.             [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];   
  26.              _arrowImage.hidden  =  NO ;  
  27.              _arrowImage.transform  =  CATransform3DIdentity ;  
  28.             [CATransaction commit];  
  29.               
  30.             [self refreshLastUpdatedDate];  
  31.               
  32.             break;  
  33.         case EGOOPullRefreshLoading:  
  34.               
  35.              _statusLabel.text  =  NSLocalizedString (@"加载中...", @"Loading Status");  
  36.             [_activityView startAnimating];  
  37.             [CATransaction begin];  
  38.             [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];   
  39.              _arrowImage.hidden  =  YES ;  
  40.             [CATransaction commit];  
  41.               
  42.             break;  
  43.         default:  
  44.             break;  
  45.     }  
  46.       
  47.      _state  =  aState ;  
  48. }  

版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS学习之路十二(UITableView下拉刷新页面)

标签:uitableviewcell   uitableview   ios开发   

原文地址:http://blog.csdn.net/yangchen9931/article/details/47785773

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!