新版本的整合参考github:
https://github.com/CoderMJLee/MJRefresh
老版本的整合:
一个开源简单易用可上下拉刷新的开源框架。
下载MJRefresh的开源包,下载地址:http://download.csdn.net/detail/z548888240/9241235;
将开源包导入自己的项目。
此时可能会出现错误,objc_msgSend(self.beginRefreshingTaget, self.beginRefreshingAction, self);
别急!
进入project界面,点击TARGETS下的项目名->build Settings->搜索"ENABLE_STRICT_OBJC_MSGSEND",并设置为NO。
ok,开源包成功整合进项目,下面就是三步整合UITableView的步骤了。
第一步,在控制器中导入头文件,顺便将之后会使用到的一个identifier也写在一起,同时定义一个区分上下拉的枚举类
//导入头文件
#import "MJRefresh.h"
//定义identifier
#define TableViewCellIdentifier @"TalkTableViewCellIdentifier"
//定义一个上下刷新的枚举:区分不同的刷新操作
typedef enum : NSUInteger {
TableViewRefreshOptionHeader,//头部刷新
TableViewRefreshOptionFooter,//底部刷新
} TableViewRefreshOption;
第二步,在创建了UITableView之后,进行下面的操作(复制到创建后的代码下面)
// 1.注册cell
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:TableViewCellIdentifier];
// 1.下拉刷新(进入刷新状态就会调用self的headerRereshing)
[tableView addHeaderWithTarget:self action:@selector(headerRereshing)];
tableView.headerPullToRefreshText = @"下拉刷新";
tableView.headerReleaseToRefreshText = @"松开刷新";
tableView.headerRefreshingText = @"正在加载...";
// 2.上拉加载更多(进入刷新状态就会调用self的footerRereshing)
[tableView addFooterWithTarget:self action:@selector(footerRereshing)];
tableView.footerPullToRefreshText = @"上拉加载更多";
tableView.footerReleaseToRefreshText = @"松开加载更多";
tableView.footerRefreshingText = @"正在加载...";
第三步,创建上下拉的响应事件处理方法
添加属性
@property (nonatomic,assign) TableViewRefreshOption tableViewOption;
/**
* 头部刷新时,调用此方法
*/
- (void)headerRereshing
{
//设置刷新操作为头部
self.tableViewOption = TableViewRefreshOptionHeader;
//...事件处理操作
//停止刷新
[self tableViewFinishRresh];
}
/**
* 底部加载更多时,调用此方法
*/
- (void)footerRereshing
{
//设置刷新操作为底部
self.tableViewOption = TableViewRefreshOptionFooter;
//...事件处理操作
//停止刷新
[self tableViewFinishRresh];
}
/**
* 结束表格的刷新操作
*/
- (void)tableViewFinishRresh
{
if (self.tableViewOption == TableViewRefreshOptionHeader) {
[self.tableView headerEndRefreshing];
}else if (self.tableViewOption == TableViewRefreshOptionFooter){
[self.tableView footerEndRefreshing];
}
}
搞定!(使用枚举TableViewRefreshOption和方法tableViewFinishRresh并不是必须的,可根据自己喜好,进行取舍)
下面是整合后的运行效果图:
头部下拉刷新:
底部上拉加载更多: