MJRefresh普通使用
2016-08-25 本文已影响3265人
郑州程序员王一
1、声明页码属性
/** 当前页码 */
@property (nonatomic, assign) NSInteger page;
2、刷新方法
/**
* tableView刷新方法
*/
-(void)setupTableViewRefresh{
//刷新头部
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadTableViewNewData)];
//改变透明度
self.tableView.mj_header.automaticallyChangeAlpha = YES;
//进来就开始刷新
[self.tableView.mj_header beginRefreshing];
//刷新尾部
self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadTableViewMoreData)];
//防止网络慢的时候,显示脚部刷新,进入隐藏
self.tableView.mj_footer.hidden = YES;
}
3、下拉刷新
/**
* 加载新的帖子数据
*/
-(void)loadTableViewNewData{
// 结束上拉
[self.tableView.mj_footer endRefreshing];
//page初始值
self.page = 0;
//参数
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"p"] = @(self.page);
params[@"psize"] = @(15);
// 发送请求
[[BM_NetAPIManager sharedManager] rb_requestComment_WithParams:params andBlock:^(id responseData, NSError *error) {
if (responseData)
{
if ([responseData[@"status"] intValue] == 1)
{
[self.topics removeAllObjects];
self.topics = [RBHotCommentModel mj_objectArrayWithKeyValuesArray:responseData[@"data"]];
// 刷新表格
[self.tableView reloadData];
/** 如果服务器返回了总数量,这段就不需要了,使用第5条写法
//判断首次加载数据是否小于服务器返回数量
if (self.topics.count < 15) {
//结束刷新
[self.tableView.mj_header endRefreshing];
self.tableView.mj_footer.hidden = NO;
[self.tableView.mj_footer endRefreshingWithNoMoreData];
return ;
}
*/
//结束刷新
self.page++;
}
else
{
//没有获取到数据
[self.tableView.mj_header endRefreshing];
self.tableView.mj_footer.hidden = NO;
[self.tableView.mj_footer endRefreshingWithNoMoreData];
return ;
}
}
else
{
}
//结束刷新
[self.tableView.mj_header endRefreshing];
self.tableView.mj_footer.hidden = NO;
}];
}
4、上拉刷新
/**
* 加载更多的帖子数据
*/
- (void)loadTableViewMoreData{
// 结束上拉
[self.tableView.mj_header endRefreshing];
// 参数
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"p"] = @(self.page);
params[@"psize"] = @(15);
// 发送请求
[[BM_NetAPIManager sharedManager] rb_requestComment_WithParams:params andBlock:^(id responseData, NSError *error) {
if (responseData)
{
if ([responseData[@"status"] intValue] == 1)
{
// 字典 -> 模型
NSArray *newTopics = [RBHotCommentModel mj_objectArrayWithKeyValuesArray:responseData[@"data"]];
//将新数据添加到 后面
[self.topics addObjectsFromArray:newTopics];
// 刷新表格
[self.tableView reloadData];
/** 如果服务器返回了总数量,这段就不需要了,使用第5条写法
//如果下拉数据小于服务器返回数量,停止下拉刷新
if (newTopics.count < 15) {
[self.tableView.mj_footer endRefreshing];
[self.tableView.mj_footer endRefreshingWithNoMoreData];
return ;
}
*/
self.page++;
}
else
{
}
}
else
{
}
//结束刷新
[self.tableView.mj_footer endRefreshing];
}];
}
5: 如果服务器返回来了总数量,刷新判断就好说了
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//刷新数据处理
self.tableView.mj_footer.hidden = (self.dataArray.count == 0);
if (self.dataArray.count == self.totalCount) {
[self.tableView.mj_footer endRefreshingWithNoMoreData];
}else{
[self.tableView.mj_footer endRefreshing];
}
return self.dataArray.count;
}
勤学如早春之苗,不见其增,日有所涨。
辍学如磨刀之石,不见其减,日有所损。