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

二.EGOTableViewPullRefresh


 

[objc] view plain copy

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

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

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

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

时间: 2024-10-11 21:23:24

iOS-上拉刷新下拉加载 新版MJRefresh和EGOTableViewPullRefresh的相关文章

新浪微博项目---首页技术点三.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)

一.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现) 1.下拉刷新 #pragma mark ---集成下*拉刷新控件 -(void)setupDownRefresh { //1.添加刷新控件 UIRefreshControl *control = [[UIRefreshControl alloc] init]; //只有用户通过手动下拉刷新,才会触发UIControlEventValueChanged事件 [control addTarget:self action:@selector(

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果(五) 五一劳动节马上来临,小伙伴有妹有很激动哟,首先祝天下所有的程序猿节日快乐!这个五一对于我来说有点不一样,我的人生从这个五一就转弯了,爱情长跑8年的我结婚了,一会支付宝账号我会公布出去,请自觉打款!谢谢合作. 灯光闪起来: 舞蹈跳起来: 歌曲唱起来: -------------------------------------------------------------------------------------

安卓,采用最简单易懂的方式实现上拉刷新下拉加载更多

<!-- Description:上拉刷新,下拉加载更多是现在最流行的手势操作,但是对于初学者来说,在实现上是有一定难度的, 网上很多教程讲的都过于复杂,对于初学者无法起到引导作用,特此写本文,帮助安卓新手入门理解此, 还有最为重要的一点:本文只帮助你理解,并不是想你成为代码搬运工!别被那么多代码吓到了, 其中很多都是注释,仔细看注释对你理解有很大的帮助 Author:Booker L Date:2014-05-16 --> 一,事先准备: 实现该功能,最基本的需要两个东西,一个是OnTouc

Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载

随着 Google 推出了全新的设计语言 Material Design,还迎来了新的 Android 支持库 v7,其中就包含了 Material Design 设计语言中关于 Card 卡片概念的实现 -- CardView.RecyclerView也是谷歌V7包下新增的控件,用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视图缓存. RecyclerView的优点就是,他可以通过设置LayoutMan

jQuery手机端上拉刷新下拉加载更多页面

<!doctype html> <html> <head> <title>jquery 手机端上拉刷新下拉加载更多页面</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <meta name="viewpost" content="width=device-wi

PullToRefreshRecyclerView——带上拉刷新下拉加载功能的RecyclerView

PullToRefreshRecyclerView——带上拉刷新下拉加载功能的RecyclerView

Android MVP设计框架模板 之 漂亮ListView上拉刷新下拉加载更多

mvp的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理.MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller. 项目中大部分是面对接口编程,通过P层可以预先将所有需要的接口功能

通用版的上拉刷新下拉加载控件

通用版的上拉刷新下拉加载控件 适用于各种控件实现上拉刷新,下拉加载的功能. 下载地址:http://www.devstore.cn/code/info/964.html 运行截图:    

小程序 上拉刷新/下拉加载

小程序项目中上拉刷新下拉加载是比较常见的需求,官方文档也提供了相当友好的API,但是因为API隐藏的比较深,文档描述也比较模糊所以也折腾了一番(官方文档),在此记录一下使用方式 onPullDownRefresh()  //用户下拉刷新事件,onReachBottom() //用户上拉触底事件 onPullDownRefresh和onReachBottom是小程序的页面事件,官方文档描述"需要在app.json的window选项中或页面的json文件中开启enablePullDownRefres