EleBaseTableVC.m 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. //
  2. // EleBaseTableVC.m
  3. // JSJPCoach
  4. //
  5. // Created by EchoShacolee on 2018/1/30.
  6. // Copyright © 2018年 Danson. All rights reserved.
  7. //
  8. #import "EleBaseTableVC.h"
  9. #import <MJRefresh.h>
  10. #import "MBProgressHUD+Add.h"
  11. typedef NS_ENUM(NSInteger, MyGetDataType) {
  12. //正常请求数据
  13. MyGetDataTypeNomal=0,
  14. //下拉刷新请求数据
  15. MyGetDataTypeHeaderRefresh,
  16. //上拉加载更多请求数据
  17. MyGetDataTypeFooterRefresh
  18. };
  19. @interface EleBaseTableVC ()
  20. {
  21. //记录页书
  22. NSInteger _currentPageNum;
  23. //正在加载的状态
  24. BOOL _IS_LOADING;
  25. //加载数据的类型
  26. MyGetDataType _getDataType;
  27. HolderView *holderV;
  28. }
  29. @end
  30. @implementation EleBaseTableVC
  31. - (void)viewDidLoad {
  32. [super viewDidLoad];
  33. _currentPageNum = 0;
  34. _IS_LOADING = NO;
  35. _getDataType = MyGetDataTypeNomal;
  36. _dataurce = [NSMutableArray array];
  37. [self setRefreshAction];
  38. self.tableView.height = kSize.height-kNavOffSet-40-kSafeAreaBottomHeight;
  39. holderV = [[HolderView alloc] initWithFrame:self.tableView.bounds];
  40. [self.tableView addSubview:holderV];
  41. holderV.hidden = YES;
  42. self.tableView.tableFooterView = [UIView new];
  43. }
  44. - (void)didReceiveMemoryWarning {
  45. [super didReceiveMemoryWarning];
  46. // Dispose of any resources that can be recreated.
  47. }
  48. #pragma mark - 下拉刷新,上拉加载 -
  49. -(void)setRefreshAction{
  50. // 下拉加载更多
  51. __weak typeof(self) weakSelf = self;
  52. MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
  53. [weakSelf headerRefresh];
  54. }];
  55. self.tableView.mj_header = header;
  56. MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
  57. [weakSelf footerRefresh];
  58. }];
  59. self.tableView.mj_footer = footer;
  60. }
  61. -(void)headerRefresh{
  62. //设置获取数据的方式
  63. _getDataType=MyGetDataTypeHeaderRefresh;
  64. //加载数据
  65. [self getData];
  66. [self.tableView.mj_header endRefreshing];
  67. }
  68. -(void)footerRefresh{
  69. //设置获取数据的方式
  70. _getDataType=MyGetDataTypeFooterRefresh;
  71. //加载数据
  72. [self getData];
  73. [self.tableView.mj_footer endRefreshing];
  74. }
  75. #pragma mark - Table view data source
  76. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  77. return _dataurce.count;
  78. }
  79. #pragma mark - 网络请求
  80. -(void)getData{
  81. //判断当前是否正在加载数据。如果正在加载数据,直接return。
  82. if (_IS_LOADING) {
  83. return;
  84. }
  85. _IS_LOADING=YES;
  86. //获取第一页数据
  87. NSInteger needLoadPage;
  88. needLoadPage=_currentPageNum+1;
  89. if (_getDataType==MyGetDataTypeHeaderRefresh) {
  90. needLoadPage=1;
  91. }
  92. NSMutableArray *arr=[NSMutableArray array];
  93. [arr addPro:@"dqbh" Value:defUser.userDict[@"cityId"]];
  94. [arr addPro:@"stuId" Value:_stuDic[@"TSO_ID"]];
  95. [arr addPro:@"subject" Value:_kemuStr];
  96. [arr addPro:@"isPage" Value:@"1"];
  97. [arr addPro:@"pageSize" Value:@"10"];
  98. [arr addPro:@"currentPage" Value:[NSString stringWithFormat:@"%ld",(long)needLoadPage]];
  99. NSString* method = @"trainClassRecordList";
  100. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.tableView animated:YES];
  101. hud.frame = CGRectMake((kSize.width - 80)/2.0, (kSize.height - 80)/2.0, 80, 80);
  102. hud.color = [UIColor colorWithWhite:.9 alpha:.75];
  103. if (needLoadPage != 1) {//_getDataType==MyGetDataTypeFooterRefresh
  104. hud.yOffset -= 40;
  105. }
  106. [UIActivityIndicatorView appearanceWhenContainedIn:[MBProgressHUD class], nil].color = RGB_COLOR(182, 118, 74);
  107. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) {
  108. [MBProgressHUD hideHUDForView:self.tableView animated:YES];
  109. _IS_LOADING = NO;
  110. if (!root) {
  111. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.tableView animated:YES];
  112. hud.mode = MBProgressHUDModeText;
  113. hud.detailsLabelText = @"请求失败";
  114. if (needLoadPage != 1) {//_getDataType==MyGetDataTypeFooterRefresh
  115. hud.yOffset -= 40;
  116. }
  117. hud.removeFromSuperViewOnHide = YES;
  118. [hud hide:YES afterDelay:3];
  119. return ;
  120. }
  121. if ([root[@"code"] isEqualToString:@"1"]) {
  122. MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.tableView animated:YES];
  123. hud.mode = MBProgressHUDModeText;
  124. hud.detailsLabelText = root[@"msg"];
  125. if (needLoadPage != 1) {//_getDataType==MyGetDataTypeFooterRefresh
  126. hud.yOffset -= 40;
  127. }
  128. hud.removeFromSuperViewOnHide = YES;
  129. [hud hide:YES afterDelay:3];
  130. return;
  131. }
  132. //处理数据
  133. //如果获取到了数据,而且是下拉刷新,清空数组。
  134. if (_getDataType==MyGetDataTypeHeaderRefresh){
  135. [_dataurce removeAllObjects];
  136. }
  137. //追加数据
  138. [_dataurce addObjectsFromArray:root[@"body"]];
  139. if (_dataurce.count == 0) {
  140. holderV.hidden = NO;
  141. self.view.userInteractionEnabled = NO;
  142. }
  143. if ([root[@"body"] count] != 0) {
  144. //计数器+1
  145. _currentPageNum=needLoadPage;
  146. }
  147. //刷新界面
  148. [self.tableView reloadData];
  149. //恢复初始状态。
  150. _getDataType=MyGetDataTypeNomal;
  151. }];
  152. }
  153. @end