Files
peko-ios/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.m
2023-12-11 16:11:56 +08:00

186 lines
5.8 KiB
Objective-C

//
// XPLoginAraeViewController.m
// YuMi
//
// Created by YuMi on 2023/6/25.
//
#import "XPLoginAraeViewController.h"
///view
#import "XPLoginAreaTableViewCell.h"
#import "LoginAreaModel.h"
#import "NSObject+MJExtension.h"
#import "YUMIMacroUitls.h"
#import "Api+Login.h"
///Third
#import <Masonry/Masonry.h>
@interface XPLoginAraeViewController ()<UITableViewDelegate,UITableViewDataSource,XPLoginAreaTableViewCellDelegate>
@property (nonatomic,strong) UITableView *tableView;
@property (nonatomic,strong) NSMutableArray *listData;
@property (nonatomic,strong) NSMutableArray *titleList;
@end
@implementation XPLoginAraeViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self initSubViews];
[self initSubViewConstraints];
[self getPhoneAreaCodeList];
}
#pragma mark - LoginVerifCodeProtocol
-(void)getPhoneAreaCodeList{
// 获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"pi_area_info" ofType:@"json"];
// 将文件数据化
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
// 对数据进行JSON格式化并返回字典形式
NSDictionary *codeData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSArray *codeList = [LoginAreaModel modelsWithArray:codeData[@"RECORDS"]];
[self getLocalPlistWithList:codeList];
}
-(void)getLocalPlistWithList:(NSArray *)list{
NSArray * letterList = @[@"",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"];
NSMutableArray *otherList = [NSMutableArray array];
NSMutableArray *defaultList = [NSMutableArray array];
LoginAreaModel *TwModel;
LoginAreaModel *HKModel ;
LoginAreaModel *SPModel ;
LoginAreaModel *MYModel ;
LoginAreaModel *ChinsModel ;
[self.titleList addObject:@""];
for (NSString *letter in letterList) {
NSMutableArray *modelList = [NSMutableArray array];
for (LoginAreaModel *model in list) {
if([model.code isEqualToString:@"886"]){
TwModel = model;
}
if([model.code isEqualToString:@"852"]){
HKModel = model;
}
if([model.code isEqualToString:@"65"]){
SPModel = model;
}
if([model.code isEqualToString:@"60"]){
MYModel = model;
}
if([model.code isEqualToString:@"86"]){
ChinsModel = model;
}
NSString *fristLetter = [model.name substringWithRange:NSMakeRange(0, 1)];
if([letter isEqualToString:fristLetter]){
[modelList addObject:model];
}else{
if(![letterList containsObject:fristLetter] && ![otherList containsObject:model]){
[otherList addObject:model];
}
}
}
if(modelList.count > 0){
[self.titleList addObject:letter];
[self.listData addObject:modelList];
}
}
if(TwModel != nil){
[defaultList addObject:TwModel];
}
if(HKModel != nil){
[defaultList addObject:HKModel];
}
if(SPModel != nil){
[defaultList addObject:SPModel];
}
if(MYModel != nil){
[defaultList addObject:MYModel];
}
if(ChinsModel != nil){
[defaultList addObject:ChinsModel];
}
[self.listData insertObject:defaultList atIndex:0];
if(otherList.count > 0){
[self.listData addObject:otherList];
[self.titleList addObject:@"#"];
}
[self.tableView reloadData];
}
#pragma mark - UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return self.listData.count;
}
- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return self.titleList[section];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.listData[section] count];
}
- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return self.titleList;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
XPLoginAreaTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPLoginAreaTableViewCell class]) forIndexPath:indexPath];
if(cell.delegate == nil){
cell.delegate = self;
}
if(indexPath.section < self.listData.count){
NSArray *listModel = self.listData[indexPath.section];
if(indexPath.row < listModel.count){
cell.areaModel =listModel[indexPath.row];
}
}
return cell;
}
#pragma mark - XPLoginAreaTableViewCellDelegate
- (void)didSelectModel:(LoginAreaModel *)model{
LoginAreaModel *codeModel = model;
if(self.delegate && [self.delegate respondsToSelector:@selector(chooseAreaCodeSuccess:)]){
[self.delegate chooseAreaCodeSuccess:codeModel.code];
}
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - Private Method
- (void)initSubViews {
self.title = YMLocalizedString(@"XPChooseRreaCodeVC0");
[self.view addSubview:self.tableView];
}
- (void)initSubViewConstraints {
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
}
#pragma mark - Getters And Setters
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.rowHeight = kGetScaleWidth(37);
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;;
_tableView.backgroundColor = [UIColor whiteColor];
[_tableView registerClass:[XPLoginAreaTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPLoginAreaTableViewCell class])];
}
return _tableView;
}
- (NSMutableArray *)titleList{
if (!_titleList){
_titleList = [NSMutableArray array];
}
return _titleList;
}
- (NSMutableArray *)listData{
if (!_listData){
_listData = [NSMutableArray array];
}
return _listData;
}
@end