iOS开发-MJRefresh 上下拉刷新快速集成

在ios7之前,一直在使用开源的EGO库。但是,在使用过程中发现,普遍封装得过于复杂、耦合性强,不利于集成到自己的项目中。

另外,在ios7之后,一些原有的下拉刷新,上拉加载控件表现的就不是那么出色了。除了可能出错外,也不符合扁平化的风格。

后来,在code4App上发现了一个大牛上传了一个开源代码, 仅需几行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。

下载下来自己试了下,发现不错。  mark下。

下载链接:http://code4app.com/ios/快速集成下拉上拉刷新/52326ce26803fabc46000000

下面纪录下自己的集成过程,当然,作者所给的demo里面已经很详细的给出了。 这里只不过是纪录下自己的实现过程而已。

1.将MJRefresh文件夹整个导入所需的工程中。

2.文件夹中的MJRefresh.bundle--->[email protected] 图片可自行替换,这个会在刷新过程中显示。

3.可以在MJRefreshConst.h和MJRefreshConst.m文件中自定义显示的文字内容和文字颜色。

4.只要你的view能够滚动,就能集成这个控件,比如UIScrollView、UITableView、UICollectionView

5.在需要使用的地方,加入如下代码即可。

5.1  导入头文件

[cpp] view
plain
copy

  1. #import "MJRefresh.h"

[cpp] view
plain
copy

  1. #import "MJRefresh.h"

5.2  遵从协议

[cpp] view
plain
copy

  1. @interface ViewController ()<MJRefreshBaseViewDelegate>

5.3  为你的view添加控件

[cpp] view
plain
copy

  1. MJRefreshFooterView *footer = [MJRefreshFooterView footer];
  2. footer.scrollView = myTableView;
  3. footer.delegate = self;
  4. MJRefreshHeaderView *header = [MJRefreshHeaderView header];
  5. header.scrollView = myTableView;
  6. header.delegate = self;

[cpp] view
plain
copy

  1. MJRefreshFooterView *footer = [MJRefreshFooterView footer];
  2. footer.scrollView = myTableView;
  3. footer.delegate = self;
  4. MJRefreshHeaderView *header = [MJRefreshHeaderView header];
  5. header.scrollView = myTableView;
  6. header.delegate = self;

5.4实现代理方法

[cpp] view
plain
copy

  1. #pragma mark - 刷新控件的代理方法
  2. #pragma mark 开始进入刷新状态
  3. - (void)refreshViewBeginRefreshing:(MJRefreshBaseView *)refreshView
  4. {
  5. NSLog(@"%@----开始进入刷新状态", refreshView.class);
  6. // 2.2秒后刷新表格UI
  7. [self performSelector:@selector(doneWithView:) withObject:refreshView afterDelay:2.0];
  8. }
  9. #pragma mark 刷新完毕
  10. - (void)refreshViewEndRefreshing:(MJRefreshBaseView *)refreshView
  11. {
  12. NSLog(@"%@----刷新完毕", refreshView.class);
  13. }
  14. #pragma mark 监听刷新状态的改变
  15. - (void)refreshView:(MJRefreshBaseView *)refreshView stateChange:(MJRefreshState)state
  16. {
  17. switch (state) {
  18. case MJRefreshStateNormal:
  19. NSLog(@"%@----切换到:普通状态", refreshView.class);
  20. break;
  21. case MJRefreshStatePulling:
  22. NSLog(@"%@----切换到:松开即可刷新的状态", refreshView.class);
  23. break;
  24. case MJRefreshStateRefreshing:
  25. NSLog(@"%@----切换到:正在刷新状态", refreshView.class);
  26. break;
  27. default:
  28. break;
  29. }
  30. }
  31. #pragma mark 刷新表格并且结束正在刷新状态
  32. - (void)doneWithView:(MJRefreshBaseView *)refreshView
  33. {
  34. // 刷新表格
  35. [myTableView reloadData];
  36. // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
  37. [refreshView endRefreshing];
  38. }

[cpp] view
plain
copy

  1. #pragma mark - 刷新控件的代理方法
  2. #pragma mark 开始进入刷新状态
  3. - (void)refreshViewBeginRefreshing:(MJRefreshBaseView *)refreshView
  4. {
  5. NSLog(@"%@----开始进入刷新状态", refreshView.class);
  6. // 2.2秒后刷新表格UI
  7. [self performSelector:@selector(doneWithView:) withObject:refreshView afterDelay:2.0];
  8. }
  9. #pragma mark 刷新完毕
  10. - (void)refreshViewEndRefreshing:(MJRefreshBaseView *)refreshView
  11. {
  12. NSLog(@"%@----刷新完毕", refreshView.class);
  13. }
  14. #pragma mark 监听刷新状态的改变
  15. - (void)refreshView:(MJRefreshBaseView *)refreshView stateChange:(MJRefreshState)state
  16. {
  17. switch (state) {
  18. case MJRefreshStateNormal:
  19. NSLog(@"%@----切换到:普通状态", refreshView.class);
  20. break;
  21. case MJRefreshStatePulling:
  22. NSLog(@"%@----切换到:松开即可刷新的状态", refreshView.class);
  23. break;
  24. case MJRefreshStateRefreshing:
  25. NSLog(@"%@----切换到:正在刷新状态", refreshView.class);
  26. break;
  27. default:
  28. break;
  29. }
  30. }
  31. #pragma mark 刷新表格并且结束正在刷新状态
  32. - (void)doneWithView:(MJRefreshBaseView *)refreshView
  33. {
  34. // 刷新表格
  35. [myTableView reloadData];
  36. // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
  37. [refreshView endRefreshing];
  38. }

6.你可以通过调用beginRefreshing自动进入下拉刷新状态。

7.你可以通过调用endRefreshing结束刷新状态。

8.为了保证内部不泄露,最好在控制器的dealloc中释放占用的内存

- (void)dealloc

{

[_header free];

[_footer free];

}

效果图:

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

时间: 2024-11-25 08:31:37

iOS开发-MJRefresh 上下拉刷新快速集成的相关文章

IOS开发UI基础--数据刷新

IOS开发UI基础--数据刷新 cell的数据刷新包含以下几个方面 添加数据 删除数据 更改数据 全局刷新方法(最常用) [self.tableView reloadData]; // 屏幕上的所有可视的cell都会刷新一遍 局部刷新方法 添加数据 NSArray *indexPaths = @[ [NSIndexPath indexPathForRow:0 inSection:0], [NSIndexPath indexPathForRow:1 inSection:0] ]; [self.ta

iOS MJRefresh下拉刷新 上拉加载(可添加gif图版) 小结

1.首先去github上下载最新版 MJ刷新库 下载MJ链接 2.tableVIew中加入相关代码 _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, MCAPPWidth, MCAPPHeight - 64)]; _tableView.backgroundColor = myClearColor; _tableView.separatorStyle = UITableViewCellSeparatorStyleNon

iOS开发--Bison详解连连支付集成简书

"最近由于公司项目需要集成连连支付,文档写的不是很清楚,遇到了一些坑,因此记录一下,希望能帮到有需要的人." 前面简单的集成没有遇到什么坑,在此整理一下官方的集成文档,具体步骤如下 导入文件 添加头文件引用 设置link标志Target->Build Setting ,Other Linker Flags 设置为 -all_load可能添加-all_load以后和其他库冲突,可以尝试使用 -force_load 单独load库, force_load后面跟的是 lib库的完整路径

Android开发----PullRefreshLibrary下拉刷新上拉加载相关代码

Mainactivity public class MainActivity extends Activity { private String url = "http://apis.juhe.cn/goodbook/catalog?key=9d6ef8c31647a206e05fcaff70527182&dtype=xml";    private List<Xmlarray> list;    private ListView lv;    // 定义一个变量,

iOS简单的下拉刷新

做一个下拉后自动在tableviewCell 上刷新当前时间的一个小demmo. 新建一个UITableviewController,在viewDidLoad里初始化变量,时间和UIRefreshControl,代码如下: #import "TableViewController.h"@interface ViewController()@property(nonatomic,strong)NSMutableArray *logs;@end@implementation ViewCon

MJRefresh上拉刷新下拉加载

1.创建 //下拉刷新    _headerView = [MJRefreshHeaderView header];    _headerView.scrollView = _tbView;    _headerView.delegate = self;        //上拉加载更多    _footerView = [MJRefreshFooterView footer];    _footerView.scrollView = _tbView;    _footerView.delegat

怎么使MJRefresh上拉刷新完毕显示&quot;已经全部加载完毕&quot;

在上拉结束后,看看MJRefresh做了什么,进入c方法中, 进入之后,如下图: 这里设置了状态,看看状态有哪些,点进去如下图所示: 找到状态后,修改即可, 就是endRefreshing方法执行完毕后, 修改相应mj_footer.state 的状态为MJRefreshStateNoMoreData 即可. 代码如下: 1 // 结束刷新 2 [self.tableView.mj_footer endRefreshing]; 3 self.tableView.mj_footer.state =

iOS开发小技巧:刷新UITableView

UITableView对于iOS开发者来说一定不会陌生,很有可能你的APP很多界面都用到它.关于UITableView的文章,想必已经不计其数,没事可以多看看.特别是UITableView优化的文章,非常值得仔细琢磨一番. UITableView对于iOS开发者来说一定不会陌生,很有可能你的APP很多界面都用到它.关于UITableView的文章,想必已经不计其数,没事可以多看看.特别是UITableView优化的文章,非常值得仔细琢磨一番. 今天我们来看看如何刷新UITableView的,一般

iOS TableView实现下拉刷新数据

1. 创建刷新控件, 可通过xib或代码方式创建控件: - (void)setupDownRefresh { /* 添加刷新控件 */ UIRefreshControl *control = [[UIRefreshControl alloc] init]; // 监听事件 [control addTarget:self action:@selector(loadNewDatas:) forControlEvents:UIControlEventValueChanged]; [self.table