列表下拉刷新

来源:互联网 发布:淘宝消保 编辑:程序博客网 时间:2024/06/10 07:34

本文用到的是:RefreshTable.

文件下载请移步:https://github.com/enormego/EGOTableViewPullRefresh

本来想传图的。可不知道怎么回事,无法上传。暂时不上传了

1.请将RefreshTableHeaderView的两个相关文件及图片文件 引入你的工程中


2.引入相关

.h中的操作

2.1 #import "EGORefreshTableHeaderView.h"

2.2 添加

EGORefreshTableHeaderDelegate ,还要记得引入UIScrollViewDelegate

2.3 在.h中添加

EGORefreshTableHeaderView *_refreshHeaderView;

BOOL _reloading;

2.4 添加两个方法

- (void)reloadTableViewDataSource;

- (void)doneLoadingTableViewData;


如下:

[cpp] view plaincopy
  1. #import <UIKit/UIKit.h>  
  2. #import "EGORefreshTableHeaderView.h"  
  3.   
  4. @interface KeHuanWangFirstViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UIScrollViewDelegate,EGORefreshTableHeaderDelegate>{  
  5.     EGORefreshTableHeaderView *_refreshHeaderView;  
  6.       
  7.     BOOL _reloading;//主要是记录是否在刷新中  
  8. }  
  9. //这两个是下拉刷新的事件  
  10. - (void)reloadTableViewDataSource;  
  11. - (void)doneLoadingTableViewData;  

3. .m文件中的操作

[cpp] view plaincopy
  1. //下拉刷新相关代码---------------  
  2. //重加载事件  
  3. - (void) reloadTableViewDataSource{  
  4.     _reloading = YES;  
  5.     //这里引用你加载数据的方法  
  6.   
  7. }  
  8. //加载结束事件  
  9. - (void)doneLoadingTableViewData{  
  10.       
  11.     //  model should call this when its done loading  
  12.     _reloading = NO;  
  13.     
  14.     if (得到的数组数是大于0的) {  
  15.         [self.table reloadData];  
  16.     }else{  
  17.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"获取数据失败或网络异常" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];  
  18.         [alert show];  
  19.         [alert release];  
  20.     }  
  21.     [_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.table];  
  22. }#pragma mark -#pragma mark UIScrollViewDelegate Methods  
  23. //table也是scrollview所以只要滚动就会调用这个方法  
  24. - (void)scrollViewDidScroll:(UIScrollView *)scrollView{   
  25.     NSLog(@"Scrolling...");  
  26.     [_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];  
  27.       
  28. }  
  29. //滚动结束就会调用这个方法  
  30. - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{  
  31.     NSLog(@"Scrolling Stoped...");  
  32.     [_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];  
  33.       
  34. }  
  35.   
  36. #pragma mark -  
  37. #pragma mark EGORefreshTableHeaderDelegate Methods  
  38.   
  39. //释放更新  
  40. - (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{  
  41.       
  42.     //  
  43.     //  [self reloadTableViewDataSource];  
  44.     [NSThread detachNewThreadSelector:@selector(reloadTableViewDataSource) toTarget:self withObject:nil];  
  45.     //  [self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];  
  46.       
  47. }  
  48.   
  49. - (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{  
  50.       
  51.     return _reloading; // should return if data source model is reloading  
  52.       
  53. }  
  54.   
  55. //最后一次改变的数据  
  56. - (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{  
  57.       
  58.     return [NSDate date]; // should return date data source was last changed  
  59.       
  60. }  
  61. #pragma mark - View lifecycle  
  62. //手动调用下拉刷新的代码 --------------  
  63. -(void) ViewFrashData  
  64. {    
  65.     [self.tabNews setContentOffset:CGPointMake(0, -75) animated:YES];    
  66.     [self performSelector:@selector(doneManualRefresh) withObject:nil afterDelay:0.4];    
  67. }    
  68. -(void)doneManualRefresh  
  69. {    
  70.     [_refreshHeaderView egoRefreshScrollViewDidScroll:self.tabNews];    
  71.     [_refreshHeaderView egoRefreshScrollViewDidEndDragging:self.tabNews];    
  72. }  
  73. //下拉刷新相关代码---------------  
  74. //手动调用下拉刷新的代码 --------------  
  75. //刷新按钮事件  
  76. - (void) reloadInfo  
  77. {  
  78.     //手动下拉刷新相关  
  79.     [self ViewFrashData];  
  80. }  
  81. - (void)viewDidLoad  
  82. {[super viewDidLoad];  
  83. // Do any additional setup after loading the view, typically from a nib.  
  84. //下拉刷新相关  
  85. if (  
  86. _refreshHeaderView ==nil) {  
  87. EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f,0.0f - self.tabNews.bounds.size.height,self.view.frame.size.width,self.tabNews.bounds.size.height)];  
  88. //0,-416,320,416  
  89. NSLog(@"%f",self.tabNews.bounds.size.height);  
  90. view.delegate = self;  
  91. [self.tabNewsaddSubview:view];  
  92. _refreshHeaderView = view;  
  93. [view release];  
  94. }  
  95. //  update the last update date  
  96. [_refreshHeaderViewrefreshLastUpdatedDate];  
  97.   
  98. //如果需要进入view或按刷新按钮就出现下拉加载效果。可以直接调用reloadInfo方法
原创粉丝点击