// // EleBaseTableVC.m // JSJPCoach // // Created by EchoShacolee on 2018/1/30. // Copyright © 2018年 Danson. All rights reserved. // #import "EleBaseTableVC.h" #import #import "MBProgressHUD+Add.h" typedef NS_ENUM(NSInteger, MyGetDataType) { //正常请求数据 MyGetDataTypeNomal=0, //下拉刷新请求数据 MyGetDataTypeHeaderRefresh, //上拉加载更多请求数据 MyGetDataTypeFooterRefresh }; @interface EleBaseTableVC () { //记录页书 NSInteger _currentPageNum; //正在加载的状态 BOOL _IS_LOADING; //加载数据的类型 MyGetDataType _getDataType; HolderView *holderV; } @end @implementation EleBaseTableVC - (void)viewDidLoad { [super viewDidLoad]; _currentPageNum = 0; _IS_LOADING = NO; _getDataType = MyGetDataTypeNomal; _dataurce = [NSMutableArray array]; [self setRefreshAction]; self.tableView.height = kSize.height-kNavOffSet-40-kSafeAreaBottomHeight; holderV = [[HolderView alloc] initWithFrame:self.tableView.bounds]; [self.tableView addSubview:holderV]; holderV.hidden = YES; self.tableView.tableFooterView = [UIView new]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - 下拉刷新,上拉加载 - -(void)setRefreshAction{ // 下拉加载更多 __weak typeof(self) weakSelf = self; MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ [weakSelf headerRefresh]; }]; self.tableView.mj_header = header; MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{ [weakSelf footerRefresh]; }]; self.tableView.mj_footer = footer; } -(void)headerRefresh{ //设置获取数据的方式 _getDataType=MyGetDataTypeHeaderRefresh; //加载数据 [self getData]; [self.tableView.mj_header endRefreshing]; } -(void)footerRefresh{ //设置获取数据的方式 _getDataType=MyGetDataTypeFooterRefresh; //加载数据 [self getData]; [self.tableView.mj_footer endRefreshing]; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _dataurce.count; } #pragma mark - 网络请求 -(void)getData{ //判断当前是否正在加载数据。如果正在加载数据,直接return。 if (_IS_LOADING) { return; } _IS_LOADING=YES; //获取第一页数据 NSInteger needLoadPage; needLoadPage=_currentPageNum+1; if (_getDataType==MyGetDataTypeHeaderRefresh) { needLoadPage=1; } NSMutableArray *arr=[NSMutableArray array]; [arr addPro:@"dqbh" Value:defUser.userDict[@"cityId"]]; [arr addPro:@"stuId" Value:_stuDic[@"TSO_ID"]]; [arr addPro:@"subject" Value:_kemuStr]; [arr addPro:@"isPage" Value:@"1"]; [arr addPro:@"pageSize" Value:@"10"]; [arr addPro:@"currentPage" Value:[NSString stringWithFormat:@"%ld",(long)needLoadPage]]; NSString* method = @"trainClassRecordList"; MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.tableView animated:YES]; hud.frame = CGRectMake((kSize.width - 80)/2.0, (kSize.height - 80)/2.0, 80, 80); hud.color = [UIColor colorWithWhite:.9 alpha:.75]; if (needLoadPage != 1) {//_getDataType==MyGetDataTypeFooterRefresh hud.yOffset -= 40; } [UIActivityIndicatorView appearanceWhenContainedIn:[MBProgressHUD class], nil].color = RGB_COLOR(182, 118, 74); [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) { [MBProgressHUD hideHUDForView:self.tableView animated:YES]; _IS_LOADING = NO; if (!root) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.tableView animated:YES]; hud.mode = MBProgressHUDModeText; hud.detailsLabelText = @"请求失败"; if (needLoadPage != 1) {//_getDataType==MyGetDataTypeFooterRefresh hud.yOffset -= 40; } hud.removeFromSuperViewOnHide = YES; [hud hide:YES afterDelay:3]; return ; } if ([root[@"code"] isEqualToString:@"1"]) { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.tableView animated:YES]; hud.mode = MBProgressHUDModeText; hud.detailsLabelText = root[@"msg"]; if (needLoadPage != 1) {//_getDataType==MyGetDataTypeFooterRefresh hud.yOffset -= 40; } hud.removeFromSuperViewOnHide = YES; [hud hide:YES afterDelay:3]; return; } //处理数据 //如果获取到了数据,而且是下拉刷新,清空数组。 if (_getDataType==MyGetDataTypeHeaderRefresh){ [_dataurce removeAllObjects]; } //追加数据 [_dataurce addObjectsFromArray:root[@"body"]]; if (_dataurce.count == 0) { holderV.hidden = NO; self.view.userInteractionEnabled = NO; } if ([root[@"body"] count] != 0) { //计数器+1 _currentPageNum=needLoadPage; } //刷新界面 [self.tableView reloadData]; //恢复初始状态。 _getDataType=MyGetDataTypeNomal; }]; } @end