EGORefreshTableHeaderView--ARC下面的使用

来源:互联网 发布:陈有西 公知律师 编辑:程序博客网 时间:2024/06/06 02:33

【转自 http://blog.csdn.net/w59879213/article/details/7165236  】hi~感谢原作者

首先第一步当然是下载这个下拉更新的框架了.  https://github.com/enormego/EGOTableViewPullRefresh/downloads


下载之后解包, 然后将 

EGORefreshTableHeaderDelegate.h

EGORefreshTableHeaderDelegate.m

这两个文件, 以及项目中的图片文件都复制到你的项目文件内, 这时候, 如果你启用了ARC, 应该会报一片错误, 让我们来具体看一下. 


启用了ARC之后, 就不允许手动的release了, 因此, [view release], [lable release] 还有 autorelease这样的代码都需要删除掉.

在EGORefreshTableHeaderDelegate.m的这个文件中,   @synthesize delegate=_delegate;  会报错,  "Existing ivar 'delegate' for assign property 'delegate' must be... 

解决办法是需要将EGORefreshTableHeaderDelegate.h文件中的 assign 换为retain

 

[cpp] view plaincopy
  1. //@property(nonatomic,assign) id  delegate;   //删除掉. 换为下面的  
  2. @property(nonatomic,retain)id  delegate;  

这样代码就会通过编译了~ 这样就需要将EGORefreshTableHeaderView与我们的tableview整合了, 然后按照Demo的方法, 

添加EGORefreshTableHeaderDelegate的接口, 

定义_reloading, 和EGORefreshHeaderView

声明reloadTableViewDataSource和doneLoadingTableView这两个函数

 

 

[cpp] view plaincopy
  1. #import   
  2. #import "EGORefreshTableHeaderView.h"  
  3.   
  4. @interface FMFutureMessage UIViewController  
  5.  
  6.     BOOL _reloading;  
  7.     EGORefreshTableHeaderVie*_refreshHeaderView;  
  8.  
  9.   
  10. @property(strong, nonatomic) IBOutlet UITableView *tbView;  
  11.   
  12. -(void)reloadTableViewDataSource;  
  13. -(void)doneLoadingTableViewData  
  14. @end  

接下来, 我们需要将xib文件中的TableViewController与这里定义的tbView建立关联, 因为我忘记了指定tbView与XIB中的TabViewController, 导致了刷新箭头怎么样也显示不出来, 所以一定不要忘记啊~~~~ 
现在我们处理一下.m文件

 

处理m文件, 建立关联.和响应事件.

 

[cpp] view plaincopy
  1. (void)viewDidLoad  
  2.  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view from its nib.  
  5.     if(_refreshHeaderView == nil)  
  6.      
  7.         EGORefreshTableHeaderVie*view [[EGORefreshTableHeaderViealloc] initWithFrame:CGRectMake(0.0f, 0.0f self.tbView.bounds.size.height, self.view.frame.size.width, self.tbView.bounds.size.height)];  
  8.    
  9.         view.delegate self;  
  10.         [self.tbView addSubview:view];  
  11.         _refreshHeaderView view;  
  12.      
  13.     [_refreshHeaderView refreshLastUpdatedDate];  
  14.  

 


响应事件, 事件的响应代码就简单的多了, 按照DEMO的方法, 把接口的函数都声明了就OK了.

 

[cpp] view plaincopy
  1.    
  2. -(void)reloadTableViewDataSourc 
  3.  
  4.     NSLog(@"==开始加载数据");  
  5.     [self.tbView reloadData];  
  6.     _reloading YES;  
  7.        
  8.  
  9. (void)doneLoadingTableViewData   
  10.       
  11.      NSLog(@"===加载完数据");   
  12.     //  model should call this when its done loading    
  13.        _reloading NO;    
  14.     [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tbView];    
  15.    
  16.    
  17.    
  18. #pragma mark –   
  19. #pragma mark UIScrollViewDelegate Methods   
  20. (void)scrollViewDidScroll:(UIScrollView *)scrollView{    
  21.       
  22.     [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];    
  23.       
  24.    
  25.   
  26. (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{    
  27.       
  28.     [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];    
  29.       
  30.  
  31.    
  32. #pragma mark –   
  33. #pragma mark EGORefreshTableHeaderDelegate Methods   
  34. (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{    
  35.       
  36.     [self reloadTableViewDataSource];    
  37.     [self performSelector:@selector(doneLoadingTableViewDatawithObject:nil afterDelay:3.0];    
  38.     
  39.         
  40.       
  41.    
  42. (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{    
  43.       
  44.     return _reloading; // should return if data source model is reloading    
  45.       
  46.    
  47. (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{    
  48.       
  49.     return [NSDate date]; // should return date data source was last changed    
  50.       
  51.  

最后, 如果是开发中文应用程序, 不要忘记进入EGORefreshTableHeaderView.m中, 将提示的英文换成中文. 

 


好了, 完成~~~

0 0
原创粉丝点击