CYsendmsgFriendViewController.m 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. //
  2. // CYsendmsgFriendViewController.m
  3. // shiku_im
  4. //
  5. // Created by Ron on 2019/11/16.
  6. // Copyright © 2019 Reese. All rights reserved.
  7. //
  8. #import "CYsendmsgFriendViewController.h"
  9. #import "JXCell.h"
  10. #import "UIImage+Color.h"
  11. #import "QCheckBox.h"
  12. #import "JXChatViewController.h"
  13. #import "JXSelectLabelsVC.h"
  14. #import "JXLabelObject.h"
  15. #import "BMChineseSort.h"
  16. #import "CYGroupSendMsgViewController.h"
  17. #import "CYModel.h"
  18. #import "CYManager.h"
  19. @interface CYsendmsgFriendViewController () <UITextFieldDelegate, JXSelectLabelsVCDelegate>
  20. @property (nonatomic, strong) NSMutableArray *array;
  21. @property (nonatomic, strong) UITextField *seekTextField;
  22. @property (nonatomic, strong) NSMutableArray *searchArray;
  23. @property (nonatomic, strong) NSSet * existSet;
  24. @property (nonatomic, strong) NSMutableArray *selUserIdArray;
  25. @property (nonatomic, strong) NSMutableArray *selUserNameArray;
  26. @property (nonatomic, strong) UIButton *nextBtn;
  27. @property (nonatomic, strong) UIView *tableHeadView;
  28. @property (nonatomic, strong) UILabel *selectLabelTip;
  29. @property (nonatomic, strong) UILabel *selectLabels;
  30. @property (nonatomic, strong) NSMutableArray *selLabelsArr;
  31. //排序后的出现过的拼音首字母数组
  32. @property(nonatomic,strong)NSMutableArray *indexArray;
  33. //排序好的结果数组
  34. @property(nonatomic,strong)NSMutableArray *letterResultArr;
  35. @property (nonatomic, strong) NSMutableArray *checkBoxArr;
  36. @property (nonatomic, strong) UIButton *allSelect;
  37. @end
  38. @implementation CYsendmsgFriendViewController
  39. - (void)viewDidLoad {
  40. [super viewDidLoad];
  41. // Do any additional setup after loading the view.
  42. self.heightHeader = JX_SCREEN_TOP;
  43. self.heightFooter = JX_SCREEN_BOTTOM;
  44. self.isGotoBack = YES;
  45. //self.view.frame = g_window.bounds;
  46. self.isShowFooterPull = NO;
  47. [self createHeadAndFoot];
  48. _array = [NSMutableArray array];
  49. _searchArray = [NSMutableArray array];
  50. _selUserIdArray = [NSMutableArray array];
  51. _selUserNameArray = [NSMutableArray array];
  52. _selLabelsArr = [NSMutableArray array];
  53. _checkBoxArr = [NSMutableArray array];
  54. // self.title = Localized(@"选择标签");
  55. self.title = @"选择标签";
  56. UIButton *allSelect = [UIButton buttonWithType:UIButtonTypeSystem];
  57. [allSelect setTitle:Localized(@"JX_CheckAll") forState:UIControlStateNormal];
  58. [allSelect setTitle:Localized(@"JX_Cencal") forState:UIControlStateSelected];
  59. [allSelect setTitleColor:THESIMPLESTYLE ? [UIColor blackColor] : [UIColor whiteColor] forState:UIControlStateNormal];
  60. [allSelect setTitleColor:THESIMPLESTYLE ? [UIColor blackColor] : [UIColor whiteColor] forState:UIControlStateSelected];
  61. // [allSelect setBackgroundImage:[UIImage createImageWithColor:[UIColor clearColor]] forState:UIControlStateNormal];
  62. // [allSelect setBackgroundImage:[UIImage createImageWithColor:[UIColor clearColor]] forState:UIControlStateSelected];
  63. allSelect.tintColor = [UIColor clearColor];
  64. allSelect.frame = CGRectMake(JX_SCREEN_WIDTH - 70, JX_SCREEN_TOP - 34, 70, 24);
  65. [allSelect addTarget:self action:@selector(allSelect:) forControlEvents:UIControlEventTouchUpInside];
  66. [self.tableHeader addSubview:allSelect];
  67. _allSelect = allSelect;
  68. self.nextBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, self.tableFooter.frame.size.width, 48)];
  69. self.nextBtn.titleLabel.font = [UIFont systemFontOfSize:15.0];
  70. [self.nextBtn setTitle:Localized(@"JX_NextStep") forState:UIControlStateNormal];
  71. [self.nextBtn setTitleColor:THEMECOLOR forState:UIControlStateNormal];
  72. [self.nextBtn addTarget:self action:@selector(nextBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  73. [self.tableFooter addSubview:self.nextBtn];
  74. //搜索输入框
  75. _tableHeadView = [[UIView alloc] initWithFrame:CGRectMake(0, JX_SCREEN_TOP, JX_SCREEN_WIDTH, 50)];
  76. // backView.backgroundColor = HEXCOLOR(0xf0f0f0);
  77. [self.view addSubview:_tableHeadView];
  78. // UIButton *cancelBtn = [[UIButton alloc] initWithFrame:CGRectMake(backView.frame.size.width-5-45, 5, 45, 30)];
  79. // [cancelBtn setTitle:Localized(@"JX_Cencal") forState:UIControlStateNormal];
  80. // [cancelBtn setTitleColor:THEMECOLOR forState:UIControlStateNormal];
  81. // [cancelBtn addTarget:self action:@selector(cancelBtnAction) forControlEvents:UIControlEventTouchUpInside];
  82. // cancelBtn.titleLabel.font = SYSFONT(14);
  83. // [backView addSubview:cancelBtn];
  84. _seekTextField = [[UITextField alloc] initWithFrame:CGRectMake(15, 10, _tableHeadView.frame.size.width - 30, 30)];
  85. _seekTextField.placeholder = Localized(@"JX_EnterKeyword");
  86. _seekTextField.textColor = [UIColor blackColor];
  87. [_seekTextField setFont:SYSFONT(14)];
  88. _seekTextField.backgroundColor = HEXCOLOR(0xf0f0f0);
  89. UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"card_search"]];
  90. UIView *leftView = [[UIView alloc ]initWithFrame:CGRectMake(0, 0, 30, 30)];
  91. // imageView.center = CGPointMake(leftView.frame.size.width/2, leftView.frame.size.height/2);
  92. imageView.center = leftView.center;
  93. [leftView addSubview:imageView];
  94. _seekTextField.leftView = leftView;
  95. _seekTextField.leftViewMode = UITextFieldViewModeAlways;
  96. _seekTextField.borderStyle = UITextBorderStyleNone;
  97. _seekTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
  98. _seekTextField.delegate = self;
  99. _seekTextField.returnKeyType = UIReturnKeyGoogle;
  100. [_tableHeadView addSubview:_seekTextField];
  101. [_seekTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  102. UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 49.5, JX_SCREEN_WIDTH, .5)];
  103. lineView.backgroundColor = HEXCOLOR(0xdcdcdc);
  104. [_tableHeadView addSubview:lineView];
  105. //去掉标签
  106. // UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(lineView.frame), JX_SCREEN_WIDTH, 54)];
  107. // [btn addTarget:self action:@selector(selectLabels:) forControlEvents:UIControlEventTouchUpInside];
  108. // [_tableHeadView addSubview:btn];
  109. //
  110. // _selectLabelTip = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, btn.frame.size.width, btn.frame.size.height)];
  111. // _selectLabelTip.font = [UIFont systemFontOfSize:16.0];
  112. // _selectLabelTip.text = Localized(@"JX_SelectTagGroup");
  113. // [btn addSubview:_selectLabelTip];
  114. //
  115. // _selectLabels = [[UILabel alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_selectLabelTip.frame), btn.frame.size.width, btn.frame.size.height - CGRectGetMaxY(_selectLabelTip.frame))];
  116. // _selectLabels.font = [UIFont systemFontOfSize:15.0];
  117. // _selectLabels.text = @"[标签1,标签2]";
  118. // _selectLabels.textColor = [UIColor lightGrayColor];
  119. // [btn addSubview:_selectLabels];
  120. //
  121. // lineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(btn.frame) + 4.5, JX_SCREEN_WIDTH, .5)];
  122. // lineView.backgroundColor = HEXCOLOR(0xdcdcdc);
  123. // [_tableHeadView addSubview:lineView];
  124. _tableHeadView.frame = CGRectMake(_tableHeadView.frame.origin.x, _tableHeadView.frame.origin.y, _tableHeadView.frame.size.width, CGRectGetMaxY(lineView.frame));
  125. self.tableView.tableHeaderView = _tableHeadView;
  126. [self getArrayData];
  127. }
  128. //- (void)selectLabels:(UIButton *)btn {
  129. //
  130. // JXSelectLabelsVC *vc = [[JXSelectLabelsVC alloc] init];
  131. // vc.delegate = self;
  132. // vc.selLabels = [NSMutableArray arrayWithArray:_selLabelsArr];
  133. // [g_navigation pushViewController:vc animated:YES];
  134. //}
  135. //
  136. //- (void)selectLabelsVC:(JXSelectLabelsVC *)selectLabelsVC selectLabelsArray:(NSMutableArray *)array {
  137. // _selLabelsArr = [NSMutableArray arrayWithArray:array];
  138. //
  139. // NSMutableString *nameStr = [NSMutableString string];
  140. // for (NSInteger i = 0; i < array.count; i ++) {
  141. // JXLabelObject *labelObj = array[i];
  142. // if (i == 0) {
  143. // // [100,120] [200,;
  144. // NSString *userIdList = labelObj.userIdList;
  145. // userIdList = [userIdList substringWithRange:NSMakeRange(0, [userIdList length] - 1)];
  146. // [nameStr appendString:userIdList];
  147. //// [nameStr appendFormat:@"[\"%@",labelObj.userIdList];
  148. // [nameStr appendFormat:@",%@",labelObj.userIdList];
  149. // }else {
  150. //// [nameStr appendFormat:@",%@",labelObj.userIdList];
  151. //
  152. // NSString *userIdList = labelObj.userIdList;
  153. // userIdList = [userIdList substringWithRange:NSMakeRange(0, 1)];
  154. // [nameStr appendString:userIdList];
  155. // }
  156. //
  157. //
  158. //
  159. // }
  160. //
  161. // self.selectLabels.text = nameStr;
  162. // if (nameStr.length > 0) {
  163. // self.selectLabelTip.frame = CGRectMake(self.selectLabelTip.frame.origin.x, self.selectLabelTip.frame.origin.y, self.selectLabelTip.frame.size.width, 27);
  164. // self.selectLabels.frame = CGRectMake(self.selectLabels.frame.origin.x, CGRectGetMaxY(_selectLabelTip.frame), self.selectLabels.frame.size.width, 27);
  165. // }else {
  166. // self.selectLabelTip.frame = CGRectMake(self.selectLabelTip.frame.origin.x, self.selectLabelTip.frame.origin.y, self.selectLabelTip.frame.size.width, 54);
  167. // self.selectLabels.frame = CGRectMake(self.selectLabels.frame.origin.x, CGRectGetMaxY(_selectLabelTip.frame), self.selectLabels.frame.size.width, 0);
  168. // }
  169. //}
  170. //- (void)selectLabelsVC:(JXSelectLabelsVC *)selectLabelsVC selectLabelsArray:(NSMutableArray *)array {
  171. // _selLabelsArr = [NSMutableArray arrayWithArray:array];
  172. //
  173. // NSMutableString *nameStr = [NSMutableString string];
  174. // for (NSInteger i = 0; i < array.count; i ++) {
  175. // JXLabelObject *labelObj = array[i];
  176. // if (i == 0) {
  177. // [nameStr appendFormat:@"[\"%@",labelObj.groupName];
  178. // }else if (i == array.count - 1) {
  179. // [nameStr appendFormat:@",%@\"]",labelObj.groupName];
  180. // }else {
  181. // [nameStr appendFormat:@",%@",labelObj.groupName];
  182. // }
  183. // if (array.count == 1) {
  184. // [nameStr appendString:@"\"]"];
  185. // }
  186. // }
  187. //
  188. // self.selectLabels.text = nameStr;
  189. // if (nameStr.length > 0) {
  190. // self.selectLabelTip.frame = CGRectMake(self.selectLabelTip.frame.origin.x, self.selectLabelTip.frame.origin.y, self.selectLabelTip.frame.size.width, 27);
  191. // self.selectLabels.frame = CGRectMake(self.selectLabels.frame.origin.x, CGRectGetMaxY(_selectLabelTip.frame), self.selectLabels.frame.size.width, 27);
  192. // }else {
  193. // self.selectLabelTip.frame = CGRectMake(self.selectLabelTip.frame.origin.x, self.selectLabelTip.frame.origin.y, self.selectLabelTip.frame.size.width, 54);
  194. // self.selectLabels.frame = CGRectMake(self.selectLabels.frame.origin.x, CGRectGetMaxY(_selectLabelTip.frame), self.selectLabels.frame.size.width, 0);
  195. // }
  196. //}
  197. - (void)allSelect:(UIButton *)btn {
  198. btn.selected = !btn.selected;
  199. [_selUserIdArray removeAllObjects];
  200. [_selUserNameArray removeAllObjects];
  201. [_selLabelsArr removeAllObjects];
  202. if (btn.selected) {
  203. NSArray *array;
  204. if (_seekTextField.text.length > 0) {
  205. array = _searchArray;
  206. }else {
  207. array = _array;
  208. }
  209. for (JXLabelObject *user in array) {
  210. [_selUserIdArray addObject:user.groupId];
  211. [_selUserNameArray addObject:user.groupName];
  212. [_selLabelsArr addObject:user];
  213. }
  214. }
  215. [self.nextBtn setTitle:[NSString stringWithFormat:@"%@(%ld)",Localized(@"JX_NextStep"),_selUserIdArray.count] forState:UIControlStateNormal];
  216. [_checkBoxArr removeAllObjects];
  217. [self.tableView reloadData];
  218. }
  219. - (void)nextBtnAction:(UIButton *)btn {
  220. NSMutableArray *selUserIdArray = [NSMutableArray array];
  221. NSMutableArray *selUserNameArray = [NSMutableArray array];
  222. // [selUserIdArray addObjectsFromArray:_selUserIdArray];
  223. // [selUserNameArray addObjectsFromArray:_selUserNameArray];
  224. for (NSInteger i = 0; i < self.selLabelsArr.count; i ++) {
  225. JXLabelObject *labelObj = self.selLabelsArr[i];
  226. NSArray *labelUserIds = [labelObj.userIdList componentsSeparatedByString:@","];
  227. for (NSInteger j = 0; j < labelUserIds.count; j ++) {
  228. NSString *labelUserId = labelUserIds[j];
  229. NSString *labelUserName = [JXUserObject getUserNameWithUserId:labelUserId];
  230. BOOL flag = NO;
  231. NSMutableArray *array = [NSMutableArray arrayWithArray:selUserIdArray];
  232. for (NSInteger m = 0; m < array.count; m ++) {
  233. NSString *selUserId = array[m];
  234. if ([labelUserId isEqualToString:selUserId]) {
  235. flag = YES;
  236. break;
  237. }
  238. }
  239. if (!flag) {
  240. [selUserIdArray addObject:labelUserId];
  241. [selUserNameArray addObject:labelUserName];
  242. }
  243. }
  244. }
  245. CYManager.sharedManager.getModel.selFriendyNameArr = _selUserNameArray;
  246. CYManager.sharedManager.getModel.selLableIdArr = _selUserIdArray;
  247. CYManager.sharedManager.getModel.selFriendyIdArr = selUserIdArray;
  248. [g_navigation popToViewController:[CYGroupSendMsgViewController class] animated:true];
  249. }
  250. - (void)nextBtnAction2:(UIButton *)btn {
  251. NSMutableArray *selUserIdArray = [NSMutableArray array];
  252. NSMutableArray *selUserNameArray = [NSMutableArray array];
  253. // NSMutableArray *selUserIdArray2 = [NSMutableArray array];
  254. [selUserIdArray addObjectsFromArray:_selUserIdArray];
  255. [selUserNameArray addObjectsFromArray:_selUserNameArray];
  256. for (NSInteger i = 0; i < self.selLabelsArr.count; i ++) {
  257. JXLabelObject *labelObj = self.selLabelsArr[i];
  258. NSArray *labelUserIds = [labelObj.userIdList componentsSeparatedByString:@","];
  259. for (NSInteger j = 0; j < labelUserIds.count; j ++) {
  260. NSString *labelUserId = labelUserIds[j];
  261. NSString *labelUserName = [JXUserObject getUserNameWithUserId:labelUserId];
  262. BOOL flag = NO;
  263. NSMutableArray *array = [NSMutableArray arrayWithArray:selUserIdArray];
  264. for (NSInteger m = 0; m < array.count; m ++) {
  265. NSString *selUserId = array[m];
  266. if ([labelUserId isEqualToString:selUserId]) {
  267. flag = YES;
  268. break;
  269. }
  270. }
  271. if (!flag) {
  272. [selUserIdArray addObject:labelUserId];
  273. [selUserNameArray addObject:labelUserName];
  274. }
  275. }
  276. }
  277. if (!selUserIdArray.count) {
  278. [g_App showAlert:Localized(@"JX_SelectGroupUsers")];
  279. return;
  280. }
  281. // JXChatViewController *vc = [[JXChatViewController alloc] init];
  282. // vc.userIds = selUserIdArray;
  283. // CYManager.sharedManager.getModel.selGroupNameArr = selUserNameArray;
  284. // CYManager.sharedManager.getModel.selGroupIdArr = selUserIdArray;
  285. CYManager.sharedManager.getModel.selFriendyNameArr = selUserNameArray;
  286. CYManager.sharedManager.getModel.selFriendyIdArr = selUserIdArray;
  287. // vc.userNames = selUserNameArray;
  288. // vc.isGroupMessages = YES;
  289. // [g_navigation pushViewController:vc animated:YES];
  290. [g_navigation popToViewController:[CYGroupSendMsgViewController class] animated:true];
  291. }
  292. - (void)nextBtnAction1:(UIButton *)btn {
  293. NSMutableArray *selUserIdArray = [NSMutableArray array];
  294. NSMutableArray *selUserNameArray = [NSMutableArray array];
  295. [selUserIdArray addObjectsFromArray:_selUserIdArray];
  296. [selUserNameArray addObjectsFromArray:_selUserNameArray];
  297. for (NSInteger i = 0; i < self.selLabelsArr.count; i ++) {
  298. JXLabelObject *labelObj = self.selLabelsArr[i];
  299. NSArray *labelUserIds = [labelObj.userIdList componentsSeparatedByString:@","];
  300. for (NSInteger j = 0; j < labelUserIds.count; j ++) {
  301. NSString *labelUserId = labelUserIds[j];
  302. NSString *labelUserName = [JXUserObject getUserNameWithUserId:labelUserId];
  303. BOOL flag = NO;
  304. NSMutableArray *array = [NSMutableArray arrayWithArray:selUserIdArray];
  305. for (NSInteger m = 0; m < array.count; m ++) {
  306. NSString *selUserId = array[m];
  307. if ([labelUserId isEqualToString:selUserId]) {
  308. flag = YES;
  309. break;
  310. }
  311. }
  312. if (!flag) {
  313. [selUserIdArray addObject:labelUserId];
  314. [selUserNameArray addObject:labelUserName];
  315. }
  316. }
  317. }
  318. if (!selUserIdArray.count) {
  319. [g_App showAlert:Localized(@"JX_SelectGroupUsers")];
  320. return;
  321. }
  322. // JXChatViewController *vc = [[JXChatViewController alloc] init];
  323. // vc.userIds = selUserIdArray;
  324. // vc.userNames = selUserNameArray;
  325. CYManager.sharedManager.getModel.selFriendyNameArr = selUserNameArray;
  326. CYManager.sharedManager.getModel.selFriendyIdArr = selUserIdArray;
  327. // vc.isGroupMessages = YES;
  328. // [g_navigation pushViewController:vc animated:YES];
  329. [g_navigation popToViewController:[CYGroupSendMsgViewController class] animated:YES];
  330. }
  331. - (void) cancelBtnAction {
  332. _seekTextField.text = nil;
  333. [_seekTextField resignFirstResponder];
  334. [self getArrayData];
  335. }
  336. - (void)didSelectedCheckBox:(QCheckBox *)checkbox checked:(BOOL)checked{
  337. JXLabelObject *user;
  338. [self.view endEditing:YES];
  339. if (_seekTextField.text.length > 0) {
  340. user = _searchArray[checkbox.tag % 10000];
  341. }else{
  342. user = [[self.letterResultArr objectAtIndex:checkbox.tag / 10000] objectAtIndex:checkbox.tag % 10000];
  343. }
  344. if(checked){
  345. BOOL flag = NO;
  346. for (NSInteger i = 0; i < _selUserIdArray.count; i ++) {
  347. NSString *selUserId = _selUserIdArray[i];
  348. if ([selUserId isEqualToString:user.groupId]) {
  349. flag = YES;
  350. return;
  351. }
  352. }
  353. [_selUserIdArray addObject:user.groupId];
  354. [_selUserNameArray addObject:user.groupName];
  355. [_selLabelsArr addObject:user];
  356. }
  357. else{
  358. [_selUserIdArray removeObject:user.groupId];
  359. [_selUserNameArray removeObject:user.groupName];
  360. [_selLabelsArr removeObject:user];
  361. }
  362. if (_selUserIdArray.count <= 0) {
  363. [self.nextBtn setTitle:[NSString stringWithFormat:@"%@",Localized(@"JX_NextStep")] forState:UIControlStateNormal];
  364. }else {
  365. [self.nextBtn setTitle:[NSString stringWithFormat:@"%@(%ld)",Localized(@"JX_NextStep"),_selUserIdArray.count] forState:UIControlStateNormal];
  366. }
  367. if (_selUserIdArray.count < _array.count) {
  368. [_allSelect setSelected:NO];
  369. } else {
  370. [_allSelect setSelected:YES];
  371. }
  372. }
  373. - (void) textFieldDidChange:(UITextField *)textField {
  374. if (textField.text.length <= 0) {
  375. [self getArrayData];
  376. return;
  377. }
  378. [_searchArray removeAllObjects];
  379. for (NSInteger i = 0; i < _array.count; i ++) {
  380. JXLabelObject * user = _array[i];
  381. NSString *userStr = [user.groupName lowercaseString];
  382. NSString *textStr = [textField.text lowercaseString];
  383. if ([userStr rangeOfString:textStr].location != NSNotFound) {
  384. [_searchArray addObject:user];
  385. }
  386. }
  387. [_checkBoxArr removeAllObjects];
  388. [self.tableView reloadData];
  389. }
  390. -(void)getArrayData{
  391. // _array=[[JXUserObject sharedInstance] fetchAllUserFromLocal];
  392. // _array=[[JXUserObject sharedInstance] fetchAllLabelsFromLocal];
  393. _array = [[JXLabelObject sharedInstance] fetchAllLabelsFromLocal];
  394. //选择拼音 转换的 方法
  395. BMChineseSortSetting.share.sortMode = 2; // 1或2
  396. //排序 Person对象
  397. [BMChineseSort sortAndGroup:_array key:@"groupName" finish:^(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray *> *sortedObjArr) {
  398. if (isSuccess) {
  399. self.indexArray = sectionTitleArr;
  400. self.letterResultArr = sortedObjArr;
  401. [_checkBoxArr removeAllObjects];
  402. [self.tableView reloadData];
  403. }
  404. }];
  405. // //根据Person对象的 name 属性 按中文 对 Person数组 排序
  406. // self.indexArray = [BMChineseSort IndexWithArray:_array Key:@"userNickname"];
  407. // self.letterResultArr = [BMChineseSort sortObjectArray:_array Key:@"userNickname"];
  408. // [self.tableView reloadData];
  409. }
  410. #pragma mark ---------tableView协议----------------
  411. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  412. {
  413. if (_seekTextField.text.length > 0) {
  414. return 1;
  415. }
  416. return [self.indexArray count];
  417. }
  418. - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
  419. if (_seekTextField.text.length > 0) {
  420. return Localized(@"JXFriend_searchTitle");
  421. }
  422. return [self.indexArray objectAtIndex:section];
  423. }
  424. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  425. {
  426. if (_seekTextField.text.length > 0) {
  427. return _searchArray.count;
  428. }
  429. return [(NSMutableArray *)[self.letterResultArr objectAtIndex:section] count];
  430. }
  431. -(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
  432. if (_seekTextField.text.length > 0) {
  433. return nil;
  434. }
  435. return self.indexArray;
  436. }
  437. - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
  438. return index;
  439. }
  440. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  441. {
  442. NSArray * tempArray;
  443. if (_seekTextField.text.length > 0) {
  444. tempArray = _searchArray;
  445. }else{
  446. tempArray = [self.letterResultArr objectAtIndex:indexPath.section];
  447. }
  448. JXCell *cell=nil;
  449. NSString* cellName = [NSString stringWithFormat:@"selVC_%d",(int)indexPath.row];
  450. // cell = [tableView dequeueReusableCellWithIdentifier:cellName];
  451. // QCheckBox* btn;
  452. // if (!cell) {
  453. cell = [[JXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName];
  454. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  455. QCheckBox* btn = [[QCheckBox alloc] initWithDelegate:self];
  456. btn.frame = CGRectMake(20, 15, 25, 25);
  457. [cell addSubview:btn];
  458. // }
  459. JXLabelObject *user=tempArray[indexPath.row];
  460. btn.tag = indexPath.section * 10000 + indexPath.row;
  461. BOOL flag = NO;
  462. for (NSInteger i = 0; i < _selUserIdArray.count; i ++) {
  463. NSString *selUserId = _selUserIdArray [i];
  464. if ([user.groupId isEqualToString:selUserId]) {
  465. flag = YES;
  466. break;
  467. }
  468. }
  469. btn.checked = flag;
  470. [_checkBoxArr addObject:btn];
  471. // cell = [[JXCell alloc] init];
  472. [_table addToPool:cell];
  473. cell.title = user.groupName;
  474. // cell.subtitle = user.groupId;
  475. // cell.bottomTitle = [TimeUtil formatDate:user.timeCreate format:@"MM-dd HH:mm"];
  476. cell.userId = user.groupId;
  477. cell.isSmall = YES;
  478. [cell headImageViewImageWithUserId:nil roomId:nil];
  479. cell.headImageView.frame = CGRectMake(cell.headImageView.frame.origin.x + 50, cell.headImageView.frame.origin.y, cell.headImageView.frame.size.width, cell.headImageView.frame.size.height);
  480. cell.lbTitle.frame = CGRectMake(cell.lbTitle.frame.origin.x + 50, cell.lbTitle.frame.origin.y, cell.lbTitle.frame.size.width, cell.lbTitle.frame.size.height);
  481. return cell;
  482. }
  483. -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  484. {
  485. QCheckBox *checkBox = nil;
  486. for (NSInteger i = 0; i < _checkBoxArr.count; i ++) {
  487. QCheckBox *btn = _checkBoxArr[i];
  488. if (btn.tag / 10000 == indexPath.section && btn.tag % 10000 == indexPath.row) {
  489. checkBox = btn;
  490. break;
  491. }
  492. }
  493. checkBox.selected = !checkBox.selected;
  494. [self didSelectedCheckBox:checkBox checked:checkBox.selected];
  495. }
  496. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  497. {
  498. return 54;
  499. }
  500. - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
  501. [self.view endEditing:YES];
  502. }
  503. /*
  504. #pragma mark - Navigation
  505. // In a storyboard-based application, you will often want to do a little preparation before navigation
  506. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  507. // Get the new view controller using [segue destinationViewController].
  508. // Pass the selected object to the new view controller.
  509. }
  510. */
  511. @end