#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>

@property(strong,nonatomic)UIPickerView *pickView;

//定义一个可变数组用于存放省的数据

@property(strong,nonatomic)NSMutableArray *Statearry;

//定义一个可变数组用于存放市的数据

@property(strong,nonatomic)NSMutableArray *Citiesarry;

//定义一个集合分别存省和市的数据

@property(strong,nonatomic)NSArray *arry;

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//获取数据

NSString *path=[[NSBundle mainBundle] pathForResource:@"city" ofType:@"plist"];

//初始化省和市的数组

self.Statearry=[NSMutableArray array];

self.Citiesarry=[NSMutableArray array];

//ayyr这个大数组存放所有的省市

self.arry=[NSArray arrayWithContentsOfFile:path];

//获取省份的,将取出来的省份数据放在省的可变集合Statearry里

for (NSDictionary *arr in self.arry)

{

[self.Statearry addObject:arr[@"State"]];

}

//创建pickView

self.pickView=[[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 414, 200)];

self.pickView.backgroundColor=[UIColor grayColor];

self.pickView.delegate=self;

self.pickView.dataSource=self;

[self.view addSubview:self.pickView];

}

#pragma mark 数据源 Method numberOfComponentsInPickerView

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

//两列

return 2;

}

#pragma mark 数据源 Method pickerViewOfRows

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

{

if (component==0)

{

//省份的个数

return self.Statearry.count;

}

else

{

//市的个数

return self.Citiesarry.count;

}

}

#pragma mark delegate 显示信息的方法

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

if (component==0)

{

//选择的省份

return self.Statearry[row];

}

else

{

//选择的市

return self.Citiesarry[row];

}

}

#pragma mark 选中行的信息

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{

if (component==0)

{

//清空上一次市的那一列留下来的数据

[self.Citiesarry removeAllObjects];

//定义一个index,找出第一个滚动条里面的所有省对应的下标找出来,赋值给index

NSInteger index=[pickerView selectedRowInComponent:0];

//遍历出所有市

for (NSDictionary *city in self.arry[index][@"Cities"])

{

//将遍历出来市追加到存放市的集合里

[self.Citiesarry addObject:city[@"city"]];

}

//        NSLog(@"%@",self.Citiesarry);

//更新第二个滚轮的数据

[self.pickView reloadComponent:1];

}

else

{

//显示取出来的省和市

NSString *message=[NSString stringWithFormat:@"你选择的是%@的%@?",self.Statearry[[pickerView selectedRowInComponent:0]],self.Citiesarry[row]];

//设置弹出框的标题

UIAlertController *alert=[UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];

//设置按钮名称

UIAlertAction *okAction=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

}];

//设置按钮名称

UIAlertAction *cancelAction=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];

//将按钮加到提示框里面

[alert addAction:okAction];

[alert addAction:cancelAction];

//

[self presentViewController:alert animated:YES completion:nil];

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

转载于:https://www.cnblogs.com/layios/p/5270277.html

用UIpickView实现省市的联动相关推荐

  1. Vue -- 配合iView实现省市二级联动

    在实现省市二级联动时,如果省份和城市写在一个数组对象中.可以根据,点击某个省份时获取到目标省份的id 是否同 数组中的某个对象id一致 来判断 iView中的on-change事件 on-change ...

  2. android省市二级联动的实现

    因为工作的关系,需要做一个省市二级联动. 1.首先,实现这个功能所用到的控件是android 的spinner 2.要做一个省市二级联动,首先我们要有所有省及其主要城市的数据,这里我给一个我的百度云的 ...

  3. javascript省市三层联动,修改

    /* PCAS (Province City Area Selector 省.市.地区联动选择JS封装类) Ver 2.01 完整版 *\ 制作时间:2005-12-30 更新时间:2006-01-2 ...

  4. JavaScript实现省市二级联动

        JavaScript实现省市二级联动 展示一下效果? 当我鼠标点击前面的省那一栏的时候后面市那一栏会出现相对应的下辖市 实现思路 1. 添加相对应的select容器 2. 然后添加数据 3.  ...

  5. dropdownlist ajax联动,asp.net省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例...

    本文主要列举了省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例.前段时间需要作一个的Web前端应用,需要用多个框架,一个典型的应用场景是省市三级 ...

  6. 使用js、jquery完成省市二级联动

    2019独角兽企业重金招聘Python工程师标准>>> 使用js完成省市二级联动 <!DOCTYPE html> <html><head>< ...

  7. html省市多级联动下拉框,基于javascript实现全国省市二级联动下拉选择菜单

    本文实例讲述了js实现全国省市二级联动下拉选择菜单,分享给大家供大家参考.具体如下: 效果图: 具体代码: 无标题文档 //好像不是这样子 var arr_province = ["请选择省 ...

  8. 微信小程序picker组件 - 省市二级联动

    picker 从底部弹起的滚动选择器,现支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器. picker官方文档链接 由于项目需 ...

  9. JS省市二级联动菜单,sky整理收集。

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

最新文章

  1. LVM逻辑卷的缩减与删除,LVM逻辑卷快照,btrfs文件系统,网络管理
  2. 微软10亿美元投资的OpenAI如何组织员工学习新知识?这里有一份课程与书籍清单...
  3. 并发 --- 31 进程锁 守护进程 进程队列
  4. redmine2.4.2 插件安装
  5. [LoadRunner]UTF8字符格式
  6. c语言编程时碰到取整去不了_碰到编程墙时如何解开
  7. 只开窗不镀锡_推拉窗和平开窗哪个好?
  8. pluswell双机软件基本概述
  9. Sony MZ-RH1 Hi-MD
  10. WPS简历模板的图标怎么修改_HR眼里的优秀简历模板长这样!30份中英文优秀模板,可一键修改!...
  11. java 验证码图片不显示图片_验证码图片生成及无法显示问题的解决
  12. 计算机的进制的转换公式,计算机进制转换公式
  13. win10linux系统双系统,win10安装linux双系统的方法是什么_win10装linux双系统的方法...
  14. 算法编程(Java)#母牛生小牛的问题【字节】
  15. 《移动软件开发》做一个app首页
  16. DirectX(dll)修复软件推荐4.2增强版
  17. 每日新闻:贾跃亭翻脸 欲清理恒大出局;Win10坑太多 微软紧急叫停;工信部5G发牌推迟半年;联通与腾讯深度合作...
  18. 如何安装 Composer
  19. 解放拖动屏幕的双手——用xrandr配置多屏显示
  20. 梨花众创PDF文本转换器

热门文章

  1. 编程式事务和声明式事物
  2. c程序语言设计练习题,C语言程序设计练习题(含程序及参考答案)
  3. 顶级程序员和普通程序员在思维模式上的5个区别!
  4. 实现Windows和Linux之间的文件共享
  5. 28家知名IT公司名称的由来
  6. docker php 安装swoole,swoole(1)使用docker安装swoole环境
  7. python 多继承的问题
  8. 前端,你要知道的SEO知识
  9. Vue Router 4.0 正式发布!焕然一新。
  10. 面试体验:Facebook 篇(转)