#import “MJRefresh.h”
#import “AFNetworking.h”
#import “UIKit+AFNetworking.h”
#import “SVProgressHUD.h”//加载栏
#import <UIImageView+WebCache.h>
用cocopods导入pod ‘MJRefresh’ pod ‘SVProgressHUD’ pod ‘SDWebImage’
设置 当前页
@property (nonatomic,assign)int page;
<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)UITableView *table;
@property (nonatomic,strong)NSMutableArray *dataSource;
-
(void)viewDidLoad {
[super viewDidLoad];
//初始化数据
[self initData];[self.view addSubview:self.table];
//添加上拉加载 下拉刷新
[self addHeaderRefresh];[self addFooterRefresh];
//请求数据
[self setMyUrl];
[self loadData];
}
-
(void)initData{
self.dataSource=[NSMutableArray array];
//初始化页数
self.page=1;
//清空数据源
[self.dataSource removeAllObjects];
//重新发送网络请求
[self setMyUrl];
[self loadData];
} -
(UITableView *)table{
if (!_table) {
_table=[[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
_table.delegate=self;
_table.dataSource=self;
}
//注册单元格
[_table registerNib:[UINib nibWithNibName:@“BaseTableViewCell” bundle:nil] forCellReuseIdentifier:@“cell”];return _table;
} -
(void)addHeaderRefresh{
MJRefreshGifHeader *header=[MJRefreshGifHeader headerWithRefreshingBlock:^{
//刷新的回调
self.page = 1;
[self.dataSource removeAllObjects];
[self setMyUrl];
[self loadData];
}];
NSArray * imageArr = @[[UIImage imageNamed:@“common_loading_anne_0”],[UIImage imageNamed:@“common_loading_anne_1”]];
//添加正在刷新中的状态
[header setImages:imageArr forState:MJRefreshStateRefreshing];
//闲置状态
[header setImages:@[[UIImage imageNamed:@“common_loading_anne_0”]] forState:MJRefreshStateIdle];
[header setTitle:@“马上完成…” forState:MJRefreshStateRefreshing];
self.table.mj_header=header;
} -
(void)addFooterRefresh{
MJRefreshAutoGifFooter *footer=[MJRefreshAutoGifFooter footerWithRefreshingBlock:^{
self.page++;
[self setMyUrl];
[self loadData];}];
NSArray * imageArr = @[[UIImage imageNamed:@“loading_teemo_1”],[UIImage imageNamed:@“loading_teemo_2”]];
[footer setImages:imageArr forState:MJRefreshStateRefreshing];
self.table.mj_footer=footer;
} -
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.dataSource.count;
} -
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
BaseTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@“cell”];
if (self.dataSource.count>0) {
BaseModel *model=self.dataSource[indexPath.row];
[cell loadDataFromModel:model];
}
return cell;
} -
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 100;
}
//请求数据 -
(void)loadData{
//显示加载栏
[SVProgressHUD showWithStatus:@“加载中”];
//创建网络请求
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
//设置默认请求类型(NSData)
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:self.url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//解析数据NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSArray *resultArr=dic[self.KEY]; for (NSDictionary *dic in resultArr) { //封装Model BaseModel *model=[[BaseModel alloc]init]; [model setValuesForKeysWithDictionary:dic]; [self.dataSource addObject:model]; } //刷新ui [self.table reloadData]; //取消刷新控件 [self.table.mj_footer endRefreshing]; [self.table.mj_header endRefreshing]; //去掉加载栏 [SVProgressHUD dismiss];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//提示用户
//取消刷新控件
[self.table.mj_footer endRefreshing];
[self.table.mj_header endRefreshing];
//去掉加载栏
[SVProgressHUD dismiss];
}];
} -
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//点击跳转详情界面
//去掉选中效果
[tableView deselectRowAtIndexPath:indexPath animated:NO];
//跳转界面
NewsDetailViewController *detail=[[NewsDetailViewController alloc]init];
//隐藏标签栏控制器
detail.hidesBottomBarWhenPushed=YES;
//获取点中单元格的详情url
BaseModel *model=self.dataSource[indexPath.row];
detail.urlString=model.url;
[self.navigationController pushViewController:detail animated:YES];
}