对于加载数据,感觉最容易上手的就是MJRefresh这个加载第三方库了。
记得将MJRefresh导入工程里面,不然就尴尬了。
简单记载一下MJRefresh做分页,毕竟现在用的还是很少:
记得在初始化TableView的时候加入
上拉加载
_tableView.mj_footer = [MJRefreshAutoNormalFooterfooterWithRefreshingBlock:^{//页码weakSelf.page++; [weakSelf getMoveDataSource]; }];
以及
下拉刷新
_tableView.mj_header = [MJRefreshNormalHeaderheaderWithRefreshingBlock:^{//需要将页码设置为1weakSelf.page =1; [weakSelf getDataSource]; }];
保证自己在进入界面的时候就要开始加载
感觉一般的项目中,直接就在viewDidLoad中加入一行刷新代码,当然,如果有其他操作的话,也可以加入到其他函数中间去。
[_tableView.mj_header beginRefreshing];
数据加载完毕之后回调函数里参照
网络请求的时候本人习惯是用weakSelf.tableView.mj_footer.hidden来显示是否有更多值,一般没有数据之后直接是将他设置为YES把它隐藏起来。
不过MJRefresh有一个数据加载完的样式
[weakSelf.tableView.mj_footer endRefreshingWithNoMoreData];
下拉刷新
#pragma mark 刷新-(void)getDataSource{***参数*** block:^(返回值,NSError*error) {//先判断有没有Errorif(error ==nil) {//请求成功NSArray* list = 取值if(list.count>0) { [weakSelf.tableViewDataSource 赋值];//刷新界面[weakSelf.tableView reloadData];//注意将TableView的mj_header停止[weakSelf.tableView.mj_header endRefreshing];//PAGESIZE为分页个数if(weakSelf.tableViewDataSource.count < PAGESIZE) {//可以使用endRefreshingWithNoMoreData告诉用户数据请求完成,不过本人习惯将他隐藏起来,看需求了// [weakSelf.tableView.mj_footer endRefreshingWithNoMoreData];weakSelf.tableView.mj_footer.hidden =YES; }else{ weakSelf.tableView.mj_footer.hidden =NO; } }else{//无数据 也是要停止刷新的[weakSelf.tableView.mj_header endRefreshing];// [weakSelf.tableView.mj_footer endRefreshingWithNoMoreData];weakSelf.tableView.mj_footer.hidden =YES;//记得提示没有数据} }else{//请求错误的话也是要将列表更新一次weakSelf.tableViewDataSource = [NSMutableArrayarray]; [weakSelf.tableView reloadData];// [weakSelf.tableView.mj_header endRefreshing];weakSelf.tableView.mj_footer.hidden =YES; } }];}
上拉加载
#pragma mark 加载-(void)getMoveDataSource{ ****参数***** block:^(返回值,NSError*error) {if(error ==nil) {//请求成功NSArray*list = 取值;if(list.count >0) { [weakSelf.tableViewDataSource 赋值]; [weakSelf.tableView reloadData]; [weakSelf.tableView.mj_footer endRefreshing];//这里做下判断 如果页码*每个页数不正常的话就代表数据不够多了,就要把上拉加载隐藏了。if(weakSelf.tableViewDataSource.count < PAGESIZE*_page) {//[weakSelf.tableView.mj_footer endRefreshingWithNoMoreData];weakSelf.tableView.mj_footer.hidden =YES; } }else{//无数据[weakSelf.tableView.mj_header endRefreshing]; weakSelf.tableView.mj_footer.hidden =YES; } }else{ [weakSelf.tableView.mj_footer endRefreshing]; weakSelf.tableView.mj_footer.hidden =YES; } }];}
网友评论