SChooseAreaView.m 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. //
  2. // SChooseAreaView.m
  3. //
  4. //
  5. // Created by 丁凯 on 2017/8/21.
  6. //
  7. #import "SChooseAreaView.h"
  8. #import "SSelectAreaCell.h"
  9. #define kBtnSpaceW (kScreenW - 270)/4.0f
  10. @implementation SChooseAreaView
  11. - (id)initWithFrame:(CGRect)frame andChooseType:(int)areaType andAreaStr:(NSString *)areaStr
  12. {
  13. self = [super initWithFrame:frame];
  14. if (self)
  15. {
  16. int scrollIndex = 0;
  17. if (areaType == 2)
  18. {
  19. scrollIndex = 1;
  20. }else if (areaType == 1)
  21. {
  22. scrollIndex = 2;
  23. }
  24. self.sexType = areaType;
  25. self.selectRow = 0;
  26. self.chooseAreaStr = areaStr;
  27. self.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.95];
  28. self.dataArray = [[NSMutableArray alloc]init];
  29. self.nameArray = [[NSMutableArray alloc]initWithObjects:ASLocalizedString(@"看全部"),ASLocalizedString(@"只看女"),ASLocalizedString(@"只看男"), nil];
  30. self.imageArray = [[NSMutableArray alloc]initWithObjects:@"fw_area_all",@"fw_area_woman",@"fw_area_man", nil];
  31. [self creatMyUIWithType:scrollIndex];
  32. }
  33. return self;
  34. }
  35. - (void)creatMyUIWithType:(int)type
  36. {
  37. UIView *lineView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenW, 1)];
  38. lineView.backgroundColor = kAppSpaceColor4;
  39. [self addSubview:lineView];
  40. [self addSubview:[self creatLabelWithStr:ASLocalizedString(@"性别")andFrame:CGRectMake(10, 20, kScreenW-10, 30)]];
  41. for (int i = 0; i < 3; i ++)
  42. {
  43. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  44. button.frame = CGRectMake(kBtnSpaceW + (90+kBtnSpaceW)*i, 70, 90, 33);
  45. [button setImage:[UIImage imageNamed:self.imageArray[i]] forState:UIControlStateNormal];
  46. [button setTitle:self.nameArray[i] forState:UIControlStateNormal];
  47. [button setTitleColor:kAppGrayColor1 forState:UIControlStateNormal];
  48. button.tag = i;
  49. [button addTarget:self action:@selector(finishBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  50. button.titleLabel.font = [UIFont systemFontOfSize:12];
  51. [self addSubview:button];
  52. }
  53. self.bottomBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  54. self.bottomBtn.frame = CGRectMake(kBtnSpaceW + (90+kBtnSpaceW)*type, 70, 90, 33);
  55. [self addSubview:self.bottomBtn];
  56. [self.bottomBtn setBackgroundImage:[UIImage imageNamed:@"fw_area_select"] forState:UIControlStateNormal];
  57. [self sendSubviewToBack:self.bottomBtn];
  58. [self addSubview:[self creatLabelWithStr:ASLocalizedString(@"地区")andFrame:CGRectMake(10, 117, kScreenW-10, 30)]];
  59. self.myTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(self.bottomBtn.frame)+70, kScreenW, self.height-71-70-CGRectGetMaxY(self.bottomBtn.frame))];
  60. self.myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
  61. self.myTableView.backgroundColor = [UIColor clearColor];
  62. self.myTableView.dataSource = self;
  63. self.myTableView.delegate = self;
  64. [self addSubview:self.myTableView];
  65. [self.myTableView registerNib:[UINib nibWithNibName:@"SSelectAreaCell" bundle:nil] forCellReuseIdentifier:@"SSelectAreaCell"];
  66. [BGMJRefreshManager refresh:self.myTableView target:self headerRereshAction:@selector(loadDataNet) footerRereshAction:nil];
  67. self.finishBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  68. self.finishBtn.frame = CGRectMake(10, CGRectGetMaxY(self.myTableView.frame)+10, kScreenW-20, 51);
  69. self.finishBtn.layer.cornerRadius = 20;
  70. [self.finishBtn setTitle:ASLocalizedString(@"完成")forState:UIControlStateNormal];
  71. [self.finishBtn setTitleColor:kWhiteColor forState:UIControlStateNormal];
  72. [self.finishBtn setBackgroundImage:[BGUtils resizableImage:@"fw_area_finish"] forState:UIControlStateNormal];
  73. self.finishBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  74. self.finishBtn.layer.masksToBounds = YES;
  75. [self.finishBtn addTarget:self action:@selector(finishBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  76. [self addSubview:self.finishBtn];
  77. }
  78. #pragma mark 网络加载
  79. - (void)loadDataNet
  80. {
  81. NSMutableDictionary *parmDict = [NSMutableDictionary dictionary];
  82. [parmDict setObject:@"index" forKey:@"ctl"];
  83. [parmDict setObject:@"search_area" forKey:@"act"];
  84. [parmDict setObject:@(self.sexType) forKey:@"sex"];
  85. FWWeakify(self)
  86. [self.httpsManager POSTWithParameters:parmDict SuccessBlock:^(NSDictionary *responseJson)
  87. {
  88. FWStrongify(self)
  89. [self.dataArray removeAllObjects];
  90. if ([responseJson toInt:@"status"] == 1)
  91. {
  92. NSArray *array = [responseJson objectForKey:@"list"];
  93. if (array)
  94. {
  95. if (array.count > 0)
  96. {
  97. for (NSDictionary *dict in array)
  98. {
  99. UserModel *model = [UserModel mj_objectWithKeyValues:dict];
  100. [self.dataArray addObject:model];
  101. }
  102. }
  103. }
  104. [self.myTableView reloadData];
  105. if (self.dataArray.count)
  106. {
  107. [self hideNoContentViewOnView:self.myTableView];
  108. [self getChooseRow];
  109. NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:self.selectRow inSection:0];
  110. [self.myTableView scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
  111. }else
  112. {
  113. [self showNoContentViewOnView:self.myTableView];
  114. }
  115. }else
  116. {
  117. [FanweMessage alertHUD:[responseJson toString:@"error"]];
  118. }
  119. [BGMJRefreshManager endRefresh:self.myTableView];
  120. } FailureBlock:^(NSError *error)
  121. {
  122. FWStrongify(self)
  123. [BGMJRefreshManager endRefresh:self.myTableView];
  124. }];
  125. }
  126. - (UILabel *)creatLabelWithStr:(NSString *)nameStr andFrame:(CGRect)frame
  127. {
  128. UILabel *myLabel = [[UILabel alloc]initWithFrame:frame];
  129. myLabel.text = nameStr;
  130. myLabel.textColor = kAppGrayColor1;
  131. myLabel.font = [UIFont systemFontOfSize:14];
  132. return myLabel;
  133. }
  134. #pragma mark - Tableview datasource
  135. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  136. {
  137. return 1;
  138. }
  139. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  140. {
  141. if (_dataArray.count > 0)
  142. {
  143. return _dataArray.count;
  144. }else
  145. {
  146. return 0;
  147. }
  148. }
  149. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  150. {
  151. UserModel *model = _dataArray[indexPath.row];
  152. SSelectAreaCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SSelectAreaCell" forIndexPath:indexPath];
  153. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  154. cell.backgroundColor = kClearColor;
  155. if (indexPath.row == self.selectRow)
  156. {
  157. cell.bottomView.hidden = NO;
  158. cell.numLabel.textColor = cell.cityLabel.textColor = kWhiteColor;
  159. }else
  160. {
  161. cell.bottomView.hidden = YES;
  162. cell.numLabel.textColor = cell.cityLabel.textColor = kAppGrayColor1;
  163. }
  164. cell.cityLabel.text = model.city;
  165. cell.numLabel.text = model.number;
  166. return cell;
  167. }
  168. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  169. {
  170. return 36*kAppRowHScale;
  171. }
  172. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  173. {
  174. self.selectRow = (int)indexPath.row;
  175. if (indexPath.row < self.dataArray.count)
  176. {
  177. UserModel *model = _dataArray[indexPath.row];
  178. self.chooseAreaStr = model.city;
  179. }
  180. [self.myTableView reloadData];
  181. }
  182. #pragma mark 判断选择哪个row
  183. - (void)getChooseRow
  184. {
  185. self.selectRow = 0;
  186. for (int i = 0; i < self.dataArray.count; i++)
  187. {
  188. UserModel *model = self.dataArray[i];
  189. if ([model.city isEqualToString:self.chooseAreaStr])
  190. {
  191. self.selectRow = i;
  192. }
  193. }
  194. }
  195. - (void)finishBtnClick:(UIButton *)btn
  196. {
  197. if (btn == self.finishBtn)
  198. {
  199. if (self.areaBlock)
  200. {
  201. self.areaBlock(self.chooseAreaStr, self.sexType);
  202. }
  203. }else
  204. {
  205. if (btn.tag == 1)//女
  206. {
  207. self.sexType = 2;
  208. }else if (btn.tag == 2)//男
  209. {
  210. self.sexType = 1;
  211. }else //男女
  212. {
  213. self.sexType = 0;
  214. }
  215. [self loadDataNet];
  216. [UIView animateWithDuration:0.6 animations:^{
  217. CGRect rect = self.bottomBtn.frame;
  218. rect.origin.x = kBtnSpaceW + (90+kBtnSpaceW)*btn.tag;
  219. self.bottomBtn.frame = rect;
  220. }];
  221. }
  222. }
  223. //
  224. //#pragma mark - ----------------------- 无内容视图 -----------------------
  225. //
  226. //- (void)showNoContentView
  227. //{
  228. // [self.myTableView addSubview:self.noContentView];
  229. //}
  230. //
  231. //- (void)hideNoContentView
  232. //{
  233. // [self.noContentView removeFromSuperview];
  234. //}
  235. //
  236. //- (BGNoContentView *)noContentView
  237. //{
  238. // if (!_noContentView)
  239. // {
  240. // _noContentView = [BGNoContentView noContentWithFrame:CGRectMake(0, 0, 150, 175)];
  241. // _noContentView.center = CGPointMake(self.myTableView.frame.size.width/2, self.myTableView.frame.size.height/2);
  242. // }
  243. // return _noContentView;
  244. //}
  245. @end