//
//  ViewController.m
//  地区选择器
//
//  Created by 三哥哥 on 2019/6/6.
//  Copyright © 2019 三哥哥. All rights reserved.
//#import "ViewController.h"
#import "Masonry.h"
#import "AFNetworking.h"
#import "Model.h"
#import "MTodel.h"
#define url @"http://39.96.48.16:8088/HxTPortCity/findThreeTPortCity.shtml?"
#define tz  @""
/***tabbar高度*/
#define SafeAreaBottomHeight (IPHONE_X ? (49 + 34) : 49)
//判断是否是ipad
#define isPad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
//判断iPhone4系列
#define kiPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone5系列
#define kiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone6系列
#define kiPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iphone6+系列
#define kiPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneX
#define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPHoneXr
#define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneXs
#define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneXs Max
#define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)#define IS_IPHONE_X_orMore (IS_IPHONE_X==YES || IS_IPHONE_Xr== YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES)
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)@interface ViewController ()<UIPickerViewDelegate,UIPickerViewDataSource>{NSInteger isSelectNum;
}
@property (weak, nonatomic) IBOutlet UIButton *tanchu;
@property (weak, nonatomic) IBOutlet UIButton *yincang;
@property (weak, nonatomic) IBOutlet UILabel *lab;
@property(nonatomic,strong)UIPickerView *pickView;      //选择器
@property (nonatomic,strong) UIView *TopView;
@property (nonatomic,strong) UIView *MainView ;
@property (nonatomic,strong) UIButton *tui;
@property (nonatomic,strong) UIButton *que;
@property (nonatomic,strong) UIToolbar *toolBar;
@property (nonatomic,strong) Model *bankNameModel;
@property(nonatomic,strong)MTodel *MT;//Model类
@property (nonatomic,strong) NSString *ida;
@property (nonatomic,strong) NSString *idaa;
@property (nonatomic,strong) NSString *idaaa;
@property (nonatomic,strong) NSMutableArray *array;
//第一层城市iD
@property (nonatomic,strong) NSMutableArray *arrayID;@property (nonatomic,strong) NSMutableArray *arrayT;
//第二次城市ID
@property (nonatomic,strong) NSMutableArray *arrayTID;@property (nonatomic,strong) NSMutableArray *arrayV;//第三层城市ID
@property (nonatomic,strong) NSMutableArray *arrayVID;
@property (nonatomic,strong) NSMutableArray *arrayZ;@property (nonatomic,strong) NSString *o;
@property (nonatomic,strong) NSString *t;
@property (nonatomic,strong) NSString *s;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.o=[NSString new];self.t=[NSString new];self.s=[NSString new];
//    self.lab.text=@"长江-上海-上海";
//第一层self.array=[NSMutableArray array];self.arrayID=[NSMutableArray array];
//第二层self.arrayT=[NSMutableArray array];self.arrayTID=[NSMutableArray array];
//第三层self.arrayV=[NSMutableArray array];self.arrayVID=[NSMutableArray array];self.arrayZ=[NSMutableArray array];isSelectNum = 0;self.ida=[NSString string];self.idaa=[NSString string];self.idaaa=[NSString string];self.view.backgroundColor=[UIColor whiteColor];//请求网络数据self.MainView=[[UIView alloc]init];self.MainView.backgroundColor=[UIColor lightGrayColor];self.MainView.alpha=0.7;[self.view addSubview:self.MainView];[self.MainView mas_makeConstraints:^(MASConstraintMaker *make) {make.width.mas_equalTo(SCREEN_WIDTH);make.height.mas_equalTo(SCREEN_HEIGHT);}];self.MainView.hidden=YES;self.TopView=[[UIView alloc]init];self.TopView.backgroundColor=[UIColor whiteColor];[self.MainView addSubview:self.TopView];[self.TopView mas_makeConstraints:^(MASConstraintMaker *make) {if(IS_IPHONE_Xs_Max){make.bottom.mas_equalTo(400);}else{make.bottom.mas_equalTo(400);}make.width.mas_equalTo(SCREEN_WIDTH);make.height.mas_equalTo(400);}];self.tui=[[UIButton alloc]init];[self.tui setTitle:@"取消" forState:UIControlStateNormal];[self.tui addTarget:self action:@selector(yin) forControlEvents:UIControlEventTouchUpInside];[self.tui setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[self.TopView addSubview:self.tui];[self.tui mas_makeConstraints:^(MASConstraintMaker *make) {make.top.mas_equalTo(10);make.left.mas_equalTo(10);make.height.mas_equalTo(20);}];self.toolBar=[[UIToolbar alloc]init];self.toolBar.barStyle=UIBarStyleDefault;self.toolBar.backgroundColor=[UIColor blueColor];self.toolBar.tintColor=[UIColor blackColor];[self.TopView addSubview:self.toolBar];[self.toolBar mas_makeConstraints:^(MASConstraintMaker *make) {make.top.mas_equalTo(0);make.width.mas_equalTo(SCREEN_WIDTH);make.height.mas_equalTo(40);}];//初始化UIPickerViewself.pickView = [[UIPickerView alloc]init];//设置代理self.pickView.delegate = self;//设置数据源self.pickView.dataSource = self;//将PickerView添加到视图上[self.TopView addSubview:self.pickView];[self.pickView mas_makeConstraints:^(MASConstraintMaker *make) {make.top.mas_equalTo(self.toolBar.mas_bottom).offset(5);make.width.mas_equalTo(SCREEN_WIDTH);make.bottom.mas_equalTo(-15);}];UIBarButtonItem *itemA=[[UIBarButtonItem alloc]initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(yin)];UIBarButtonItem *itemB=[[UIBarButtonItem alloc]initWithTitle:@"确认" style:UIBarButtonItemStylePlain target:self action:@selector(yin)];self.toolBar.items=@[itemA,itemB];[self.tanchu addTarget:self action:@selector(tan) forControlEvents:UIControlEventTouchUpInside];[self.yincang addTarget:self action:@selector(yin) forControlEvents:UIControlEventTouchUpInside];[self requestWithData];}-(void)tan{NSLog(@"弹出");NSLog(@"o=%@,t=%@,s=%@",self.o,self.t,self.s);[self pickerView:self.pickView didSelectRow:0 inComponent:0];[self pickerView:self.pickView didSelectRow:0 inComponent:1];[self pickerView:self.pickView didSelectRow:0 inComponent:2];[self.pickView selectRow:0 inComponent:0 animated:YES];[self.pickView selectRow:0 inComponent:1 animated:YES];[self.pickView selectRow:0 inComponent:2 animated:YES];NSLog(@"有值没=%@,%@,%@",self.ida,self.idaa,self.idaaa);self.MainView.hidden=NO;[UIView animateWithDuration:0.5 animations:^{// 设置view弹出来的位置// 设置view弹出来的位置self.TopView.frame = CGRectMake(0, SCREEN_HEIGHT-400, SCREEN_WIDTH, 400);}];}-(void)requestWithData{AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];manager.responseSerializer=[AFHTTPResponseSerializer serializer];[manager GET:url parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {NSDictionary *json=[NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];self.arrayZ = json[@"data"];//第一层长江 运河 沿海for (NSDictionary *dict in json[@"data"]) {[self.array addObject:[dict objectForKey:@"onePortCityname"]];[self.arrayID addObject:[dict objectForKey:@"onePortCityid"]];}//第二层默认第一列选择的长江for (NSDictionary *dictw in [[json[@"data"] objectAtIndex:0] objectForKey:@"list"]) {[self.arrayT addObject:[dictw objectForKey:@"twoPortCityname"]];[self.arrayTID addObject:[dictw objectForKey:@"twoPortCityid"]];}//第三层默认第一列选择的长江 默认第二列选上海for (NSDictionary *dicth in [[[[json[@"data"] objectAtIndex:0] objectForKey:@"list"] objectAtIndex:0] objectForKey:@"list"]) {[self.arrayV addObject:[dicth  objectForKey:@"threePortCityname"]];[self.arrayVID addObject:[dicth objectForKey:@"threePortCityid"]];}[self->_pickView reloadAllComponents];} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(@"请求失败");}];
}
#pragma mark --------------- 数据源实现方法,设置UIPickerView列数 -----------------------
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{return self.array.count;
}#pragma mark ----------------- 设置UIPickerView每一列的行数 ---------------------
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{if (component == 0) {//设置第一层列的个数return self.array.count;}else if (component == 1){//设置第二层列的个数return self.arrayT.count;}else if (component == 2){//设置第三层列的个数return self.arrayV.count;}return 0;
}
#pragma mark --------------------- 设置每一行的内容 -----------------------------
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{if (component == 0) {return self.array[row];}else if(component == 1){return self.arrayT[row];}else if(component == 2){return self.arrayV[row];}return @"?";}#pragma mark ------------------------设置选中的内容----------------------------
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{if(component==0){NSLog(@"第一层=%@",self.array[row]);self.ida=[NSString stringWithFormat:@"%@", self.array[row]];self.o=[NSString stringWithFormat:@"%@",self.arrayID[row]];
//            NSLog(@"传值%@",self.ida);
//            NSLog(@"第一层地区对应的ID=%@",self.arrayID[row]);//更新第二层和第三层数据//先清空数组[self.arrayT removeAllObjects];[self.arrayV removeAllObjects];//第二层for (NSDictionary *dictw in [[self.arrayZ objectAtIndex:row] objectForKey:@"list"]) {[self.arrayT addObject:[dictw objectForKey:@"twoPortCityname"]];}//第三层for (NSDictionary *dicth in [[[[self.arrayZ objectAtIndex:row] objectForKey:@"list"] objectAtIndex:0] objectForKey:@"list"]) {[self.arrayV addObject:[dicth  objectForKey:@"threePortCityname"]];}//记录第一层选择的哪个数据isSelectNum = row;//每次默认选中第一个[self pickerView:self.pickView didSelectRow:0 inComponent:1];[self pickerView:self.pickView didSelectRow:0 inComponent:2];//每次默认展示第一个[self.pickView selectRow:0 inComponent:1 animated:YES];[self.pickView selectRow:0 inComponent:2 animated:YES];}else if (component==1){//更新第三层数据//先清空数组[self.arrayV removeAllObjects];//第三层for (NSDictionary *dicth in [[[[self.arrayZ objectAtIndex:isSelectNum] objectForKey:@"list"] objectAtIndex:row] objectForKey:@"list"]) {[self.arrayV addObject:[dicth  objectForKey:@"threePortCityname"]];}self.t=[NSString stringWithFormat:@"%@",self.arrayTID[row]];
//        NSLog(@"第二层=%@",self.arrayT[row]);
//        NSLog(@"第二层城市对应的ID=%@",self.arrayTID[row]);//将选择的值传给一个字符串self.idaa=[NSString stringWithFormat:@"%@", self.arrayT[row]];[self pickerView:self.pickView didSelectRow:0 inComponent:2];[self.pickView selectRow:0 inComponent:2 animated:YES];}else if(component==2){
//        NSLog(@"第三层=%@",self.arrayV[row]);
//        NSLog(@"第三层城市对应的ID=%@",self.arrayVID[row]);self.idaaa=[NSString stringWithFormat:@"%@", self.arrayV[row]];self.s=[NSString stringWithFormat:@"%@",self.arrayVID[row]];}//刷新[pickerView reloadAllComponents];}
#pragma mark --------------------- 点击确认按钮 ----------------------
-(void)yin{[UIView animateWithDuration:0.6 animations:^{// 设置view弹出来的位置self.TopView.frame = CGRectMake(0, SCREEN_HEIGHT+400, SCREEN_WIDTH, 400);}];self.MainView.hidden=YES;if(self.array.count==0){}else{self.lab.text=[NSString stringWithFormat:@"%@-%@-%@",self.ida,self.idaa,self.idaaa];NSLog(@"%@=%@=%@",self.o,self.t,self.s);}}

ios 调用后台数据三级城市选择器相关推荐

  1. js 拼写 html 调用后台数据,onclick调用函数

    最近,项目开发发现有一些效果,需要自己在js下拼接html代码,做出想要的效果,但是分成两种:一种是html页面,这是多年前写静态页面时遇到一些问题,现在突然想起来,另一种是vue页面,这是最近遇到的 ...

  2. 上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...

    现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据 每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成 1.添加data变量 编辑rec ...

  3. 织梦联动类别-地区调用不显示第三级城市的解决方法

    织梦联动类别-地区调用不显示第三级城市的原因 1.附加表dede_addoninfos 或者 你的其他表中的字段nativeplace数据类型为int型,无法保存第三级城市对应的的evalue值(比如 ...

  4. 进一步封装axios并调用其读取数据(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)

    注意!!!(修改于2020年7月18日) 在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据 报错截图如下 报错内容: {&quo ...

  5. iOS开发:城市选择器集成

    一.简介 该项目集成了三种类型的城市选择器: 1.XXCityPickerView 省市区,可以分级:1省 2省-市 3省-市-区 2.SQSelectAddress 省市区乡/镇,页面跳转 3.Ra ...

  6. 解决通过调用后台接口实现Excel导出功能,后台返回数据乱码的问题

    解决通过调用后台接口实现Excel导出功能,后台返回数据乱码的问题 问题如下: 这导致我虽然成功导出文件,但文件受损打不开 解决方案如下: 在调用接口加入: // 导出 export function ...

  7. iOS仿QQ侧滑菜单、登录按钮动画、仿斗鱼直播APP、城市选择器、自动布局等源码

    iOS精选源码 QQ侧滑菜单,右滑菜单,QQ展开菜单,QQ好友分组 image 登录按钮 image 3分钟快捷创建高性能轮播图 ScrollView嵌套ScrolloView(UITableView ...

  8. iOS仿QQ侧滑菜单、登录按钮动画、仿斗鱼直播APP、城市选择器、自动布局等源码...

    iOS精选源码 QQ侧滑菜单,右滑菜单,QQ展开菜单,QQ好友分组 登录按钮 3分钟快捷创建高性能轮播图 ScrollView嵌套ScrolloView(UITableView .UICollecti ...

  9. 省市区三级联动后台数据动态加载到页面并实现修改

    HTML页面 <select id="country" name="country"> <option selected="sele ...

最新文章

  1. 久在樊笼里,复得返自然
  2. mysql数据库导出后乱码问题_MySQL导入导出数据出现乱码的解决办法
  3. 网络即服务(NaaS)是什么???
  4. iOS8开发~UI布局(二)storyboard中autolayout和size class的使用详解
  5. 一文详解PolarDB披荆斩棘的“秘密武器”
  6. android singleinstance home,Android启动模式之singleinstance的坑
  7. 【转】用BlazeMeter录制JMeter测试脚本
  8. 作为 IT 行业的过来人,你有什么话想对后辈说的?
  9. C#编写的一个SFTP工具类
  10. Fehelper插件分享
  11. 爬虫——八爪鱼采集器
  12. 怎么才能获取企业工商数据和企业联系方式?
  13. 计算机网络谢希仁第七版课后习题答案(第七章)
  14. oracle Net manger配置网络服务
  15. 湖北省武汉汽车上牌篇2008年完整上牌程序供参考
  16. 现货、期货、期权、权证
  17. swiper 滑动图片垂直居中
  18. Python语言—爬虫之旅
  19. TM1637数码管显示STC51单片机驱动程序
  20. 物联网毕设 -- 人脸识别门禁系统(K210--HEX协议版本)

热门文章

  1. 数据分析课程之员工绩效考核【开课预告】
  2. L1-069 胎压监测
  3. 计算机服务器折旧方法,新开的企业,属于IT行业,买的电脑,服务器,办公桌椅等产品归入固定资产分别怎么计提折旧?主要是折旧年限?谢谢...
  4. 如何禁止删除文件,如何防止文件夹被删除?
  5. 网格顶点方向的计算(一种新的面积加权方法)
  6. 创建文件 touch
  7. 为什么说制造业需要MES系统?
  8. does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare
  9. android测试实现方法总结
  10. 计算机综合考试考什么,计算机考博综合考试考什么