使用一个第三方的库 MJRefresh
在viewcontroller.m里面引入 import"MJRefresh.h"头文件
1.下拉刷新的实现
//集成刷新
- (void)setupRefresh{
self.myTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
self.myTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefreshing)];
//关闭自动刷新
[self.myTableView.mj_header beginRefreshing];
}
//结束刷新
- (void)endRefreshingWithNoMoreData{
[_myTableView.mj_header endRefreshing];
}
//开始刷新 获取服务器数据
-(void)headerRefreshing{
//判断网络状态
if ([Tools checkNetWorking1]) {
hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
[Tools showHUD:@"施工中" andView:self.view andHUD:hud];
//删除数据库里面的数据
//调用服务器接口
[self endRefreshingWithNoMoreData];
}
else{
//加载本地数据
[self endRefreshingWithNoMoreData];
[Tools ToastNotification:@"网络异常" andView:self.view andLoading:NO andIsBottom:NO];
}
}
在确认收到服务器的数据时,更新数据源,调用
[self.myTableView reloadData];
2.上拉加载
类似于下拉刷新
//集成刷新
- (void)setupRefresh{
self.topLendTableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
self.topLendTableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefreshing)];
//关闭自动刷新
// [self.topLendTableView.mj_footer beginRefreshing];
}
//结束刷新
- (void)endRefreshingWithNoMoreData{
[_topLendTableView.mj_footer endRefreshing];
}
//开始刷新
-(void)footerRefreshing{
XKLog(@"刷新数据了");
//继续获取数据
else
{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"" message:@"已经加载完了" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alertView show];
[self endRefreshingWithNoMoreData];
}
}
在确认收到服务器的数据时,更新数据源,调用
[self.myTableView reloadData];
[self endRefreshingWithNoMoreData];
注意:在上拉加载时,会遇到数据的和并问题,采用两个动态数组,注意一定要初始化,不然合并后的数组会一直为空。
NSMutableArray *olddata;
NSMutableArray *newdata;
- (void)viewDidLoad {
newdata = [[NSMutableArray alloc]init];
olddata = [[NSMutableArray alloc]init];
}
[newdata addObjectsFromArray:olddata];//合并数组
刷新控件的状态
//普通闲置状态
MJRefreshSateIdle = 1;
//松开就可以进行刷新的状态
MJRefreshStatePulling,
//正在刷新中的状态
MJRefreshStateRefreshing,
//即将刷新的状态
MJRefreshStateWillRefresh,
//所有数据加载完毕,没有更多数据了
MJRefreshStateNoMoreData
找到状态后,修改即可,就是endRefreshing方法执行完毕后,修改相应mj_footer.state的状态为MJRefreshStateNoMoreData即可。
//结束刷新
[self.tableview.mj_footer endRefreshing];
self.tableview.mj_footer.state = MJRefreshStateNoMoreData;
注:有什么不明白的地方,或者写错的地方,欢留言纠错。