iOS-上拉刷新下拉加载 新版MJRefresh和EGOTableViewPullRefresh

Posted ios4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-上拉刷新下拉加载 新版MJRefresh和EGOTableViewPullRefresh相关的知识,希望对你有一定的参考价值。

上拉刷新下拉加载比较流行的两个第三方 MJRefresh EGOTableViewPullRefresh

 

一.最新版的MJRefresh

首先介绍M了个J的 最新版的MJRefresh

因为他的github里有详细介绍,话不多说上代码

 

[objc] view plain copy
 
  1. //  
  2. //  ViewController.m  
  3. //  新版MJRefresh Demo  
  4. //  
  5. //  Created by Jack_Jia on 16/1/19.  
  6. //  Copyright ? 2016年 Jack_Jia. All rights reserved.  
  7. //  
  8.   
  9. #import "ViewController.h"  
  10. #import "MJRefresh/MJRefresh.h"  
  11.   
  12. @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>  
  13. {  
  14.     UITableView *_tableView;  
  15.     NSMutableArray *_arr;  
  16. }  
  17.   
  18. @end  
  19.   
  20. @implementation ViewController  
  21.   
  22. - (void)viewDidLoad {  
  23.     [super viewDidLoad];  
  24.       
  25.     self.view.backgroundColor = [UIColor purpleColor];  
  26.       
  27.     _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];  
  28.     _tableView.delegate = self;  
  29.     _tableView.dataSource = self;  
  30.     [self.view addSubview:_tableView];  
  31.       
  32.     _arr = [NSMutableArray arrayWithObjects:@"111",@"222",@"333",@"444",@"555", nil nil];  
  33.       
  34.       
  35.       
  36.     //添加下拉加载  
  37.     //_tableView.mj_header = [MJRefreshHeader headerWithRefreshingTarget:self refreshingAction:@selector(hander)];  
  38.     //_tableView.mj_header.lastUpdatedTimeKey   key用来存储上一次下拉刷新成功的时间  
  39.     //_tableView.mj_header.lastUpdatedTime      上一次下拉刷新成功的时间  
  40.   
  41.       
  42.     // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)  
  43.     MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(hander)];  
  44.     // 设置普通状态的动画图片  
  45.     [header setImages:(NSArray *)[UIImage imageNamed:@"arrow"] forState:MJRefreshStateIdle];  
  46.       
  47.     // 设置即将刷新状态的动画图片(一松开就会刷新的状态)  
  48.     [header setImages:(NSArray *)[UIImage imageNamed:@"arrow"]forState:MJRefreshStatePulling];  
  49.     // 设置正在刷新状态的动画图片  
  50.     [header setImages:(NSArray *)[UIImage imageNamed:@"arrow"] forState:MJRefreshStateRefreshing];  
  51.       
  52.     // 隐藏时间  
  53.     //header.lastUpdatedTimeLabel.hidden = YES;  
  54.       
  55.     // 隐藏状态  
  56.     //header.stateLabel.hidden = YES;  
  57.       
  58.     // 设置文字  
  59.     [header setTitle:@"Pull down to refresh" forState:MJRefreshStateIdle];  
  60.     [header setTitle:@"Release to refresh" forState:MJRefreshStatePulling];  
  61.     [header setTitle:@"Loading ..." forState:MJRefreshStateRefreshing];  
  62.       
  63.     // 设置字体  
  64.     header.stateLabel.font = [UIFont systemFontOfSize:15];  
  65.     header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];  
  66.       
  67.     // 设置颜色  
  68.     header.stateLabel.textColor = [UIColor redColor];  
  69.     header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];  
  70.       
  71.     // 设置header  
  72.     _tableView.mj_header = header;  
  73.       
  74.     //添加上拉刷新 (同理)  
  75.     _tableView.mj_footer = [MJRefreshFooter footerWithRefreshingTarget:self refreshingAction:@selector(footer)];  
  76.       
  77.   
  78.       
  79.       
  80. }  
  81.   
  82. - (void)didReceiveMemoryWarning {  
  83.     [super didReceiveMemoryWarning];  
  84.     // Dispose of any resources that can be recreated.  
  85. }  
  86.   
  87. - (void)hander  
  88. {  
  89.     //多线程 延时调用  
  90.     [self performSelector:@selector(addMore) withObject:nil afterDelay:3];  
  91. }  
  92. - (void)addMore  
  93. {  
  94.     [_arr addObject:@"666"];  
  95.     [_tableView reloadData];  
  96.     //结束刷新  
  97.     [_tableView.mj_header endRefreshing];  
  98.       
  99.     /* 刷新状态控制 
  100.      进入刷新状态 
  101.      - (void)beginRefreshing; 
  102.      结束刷新状态 
  103.      - (void)endRefreshing; 
  104.      是否正在刷新 
  105.      - (BOOL)isRefreshing; 
  106.      */  
  107. }  
  108.   
  109. - (void)footer  
  110. {  
  111.     [self performSelector:@selector(refresh) withObject:nil];  
  112. }  
  113.   
  114. -(void)refresh  
  115. {  
  116.     [_arr addObject:@"777"];  
  117.     [_tableView reloadData];  
  118.     //结束刷新  
  119.     [_tableView.mj_header endRefreshing];  
  120. }  
  121.   
  122.   
  123. #pragma mark UITableViewDataSource  
  124.   
  125. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  126. {  
  127.     return _arr.count;  
  128. }  
  129. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  130. {  
  131.     static NSString *cellId = @"cellId";  
  132.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];  
  133.     if (!cell) {  
  134.         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];  
  135.     }  
  136.     cell.textLabel.text = _arr[indexPath.row];  
  137.       
  138.     return cell;  
  139. }  
  140.   
  141. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath  
  142. {  
  143.     [_arr removeObject:_arr[indexPath.row]];  
  144.     [_tableView reloadData];  
  145.       
  146. }  
  147.   
  148. @end  


 


二.EGOTableViewPullRefresh

技术分享

 

 

[objc] view plain copy
 
  1. <span style="font-size:18px;">#import "ViewController.h"  
  2. #import "PullTableView.h"  
  3.   
  4. @interface ViewController ()<PullTableViewDelegate,UITableViewDataSource,UITableViewDelegate>  
  5. {  
  6.     PullTableView *_tableView;  
  7.     NSMutableArray *_arr;  
  8. }  
  9.   
  10. @end  
  11.   
  12. @implementation ViewController  
  13.   
  14. - (void)viewDidLoad {  
  15.     [super viewDidLoad];  
  16.       
  17.     self.view.backgroundColor = [UIColor magentaColor];  
  18.       
  19.     _tableView = [[PullTableView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height-64)];  
  20.     _tableView.delegate = self;  
  21.     _tableView.dataSource = self;  
  22.     _tableView.pullDelegate = self;  
  23.       
  24.     _arr = [NSMutableArray arrayWithObjects:@"111",@"222",@"333",@"444",@"555", nil nil];  
  25.       
  26.       
  27.       
  28.     //背景颜色  
  29.     _tableView.pullBackgroundColor = [UIColor lightGrayColor];  
  30.     //文字颜色  
  31.     _tableView.pullTextColor = [UIColor purpleColor];  
  32.     //改变加载刷新图片  
  33.     _tableView.pullArrowImage = [UIImage imageNamed:@"tabBar_Found"];  
  34.       
  35.       
  36.     //_tableView.pullLastRefreshDate = myDate;//多长时间前更新过 计时  
  37.       
  38.       
  39.     //_tableView.pullTableIsRefreshing = YES; //页面显示就刷新  
  40.     //_tableView.pullTableIsLoadingMore = YES;//页面显示就加载  
  41.       
  42.     //文字可通过搜索功能改成你要的文字  
  43.       
  44.     [self.view addSubview:_tableView];  
  45.       
  46. }  
  47.   
  48. - (void)didReceiveMemoryWarning {  
  49.     [super didReceiveMemoryWarning];  
  50.     // Dispose of any resources that can be recreated.  
  51. }  
  52.   
  53.   
  54.   
  55. #pragma mark UITableViewDataSource  
  56.   
  57. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  58. {  
  59.     return _arr.count;  
  60. }  
  61. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  62. {  
  63.     static NSString *cellId = @"cellId";  
  64.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];  
  65.     if (!cell) {  
  66.         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];  
  67.     }  
  68.     cell.textLabel.text = _arr[indexPath.row];  
  69.       
  70.     return cell;  
  71. }  
  72.   
  73. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath  
  74. {  
  75.     [_arr removeObject:_arr[indexPath.row]];  
  76.     [_tableView reloadData];  
  77. }  
  78.   
  79.   
  80.   
  81. #pragma mark PullTableViewDelegate  
  82.   
  83. -(void)pullTableViewDidTriggerLoadMore:(PullTableView *)pullTableView  
  84. {  
  85.     NSLog(@"上拉加载");  
  86.     //多线程 延时调用  
  87.     [self performSelector:@selector(addMore) withObject:nil afterDelay:3];  
  88. }  
  89. -(void)addMore  
  90. {  
  91.     [_arr addObject:@"777"];  
  92.     [_tableView reloadData];  
  93.     //关闭加载  
  94.     _tableView.pullTableIsLoadingMore=NO;  
  95. }  
  96.   
  97. -(void)pullTableViewDidTriggerRefresh:(PullTableView *)pullTableView  
  98. {  
  99.     NSLog(@"下拉刷新");  
  100.     //多线程 延时调用  
  101.     [self performSelector:@selector(refresh) withObject:nil afterDelay:3];  
  102. }  
  103. -(void)refresh  
  104. {  
  105.     [_arr addObject:@"666"];  
  106.     [_tableView  reloadData];  
  107.     //关闭刷新  
  108.     _tableView.pullTableIsRefreshing=NO;  
  109. }  
  110.   
  111.   
  112. @end</span>  


 

EGOTableViewPullRefresh github : https://github.com/enormego/EGOTableViewPullRefresh

MJRefresh   github:  https://github.com/CoderMJLee/MJRefresh

本文综合版Demo : http://download.csdn.net/detail/jackjia2015/9410080







以上是关于iOS-上拉刷新下拉加载 新版MJRefresh和EGOTableViewPullRefresh的主要内容,如果未能解决你的问题,请参考以下文章

iOS MJRefresh 实现无感刷新

iOS MJRefresh 实现无感刷新

上拉刷新,下拉加载

关于MJRefresh 上拉刷新无法停止的解决方法

iOS常用刷新控件(下拉、上拉)详解

实现上下拉刷新MJRefresh