用UIpickView实现省市的联动

#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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

encodingaeskey java,消息体签名与加解密-开发者QA

Q 为什么要上线消息加密功能&#xff1f;A 为了更好的保护用户和公众账号的信息安全。Q 接入消息加解密功能复杂吗&#xff1f;A 开发者接入消息加解密功能并不复杂&#xff0c;微信团队提供了5种语言的示例代码(包括C、php、Python、Java和C#)&#xff0c;对于使用这个5种语言…

linux之lsof和netstat判断端口(port)被哪些应用占用

1 问题 判断端口&#xff08;port&#xff09;被哪些进程占用,我们要记得使用lsof&#xff08;list open file&#xff09;命令,或者用netstat命令。 2 命令 lsof -i:port netstat -apn | grep port 3 扩展 1) 列出所有tcp 网络连接信息 lsof -i tcp 2) 列出所有udp网络连…

多云战略:企业如何精益求精?

随着为企业用户提供更多的选择和更高的灵活性&#xff0c;多云模式正在开始受到他们的关注。但正如实施一个单一的云部署一样&#xff0c;企业需要为多云计算实施进行精心评估&#xff0c;从而选择正确的云服务供应商。在某些情况下&#xff0c;那些市场的非主流供应商可能会为…

python函数返回多个值时的数据类型是_Python3 注释多个返回值的函数类型

场景这要是讲函数注释的用法没有返回值def function(ver: str):print(var)单个返回值def function(ver: str) -> dict:a[ver,ver,ver]return a多个返回值您总是返回一个对象&#xff1b;使用return one, two只返回一个元组。所以是的&#xff0c;-> Tuple[bool, str] 完全…

最常用的动态sql语句梳理Mybatis(转)

公司项目中一直使用Mybatis作为持久层框架&#xff0c;自然&#xff0c;动态sql写得也比较多了&#xff0c;最常见的莫过于在查询语句中使用if标签来动态地改变过滤条件了。Mybatis的强大特性之一便是它的动态sql&#xff0c;免除了拼接sql带来的各种麻烦&#xff0c;在开发项目…

php 之 Final 关键字

本来想写匿名类的。。。不过是php7才支持&#xff0c;相比大家可能版本一般不会那么高&#xff0c;所以我就不写了。 引用手册中的话&#xff1a; PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final&#xff0c;则子类无法覆盖该方法。如果一个类被声明为 fina…

C#链式编程

前言昨天我写了一段这样的一段代码。var email Email.From("1075094220qq.com").To("1075094220qq.com").CC("1075094220qq.com").Subject("邮件标题").Body("<h1 align\"center\">黑哥</h1><p>黑哥…

C#动态链接库的创建及使用

动态链接库( Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序…

用C++实现简单随机二元四则运算

让我们想看看二元四则运算都需要实现什么&#xff1a; &#xff08;1&#xff09; 定制题目数量 &#xff08;2&#xff09; 是否有乘除法 &#xff08;3&#xff09; 题目数值范围 &#xff08;4&#xff09; 加减有无负数 &#xff08;5&#xff09; 除法有无余数 &#xff0…

WireShark抓包之提示Alert Level: Fatal, Description: HandShake Failure

1 问题 ssl协议失败的方法,发了client hello包之后回复server hello包失败 2 分析 对比正常client hello的数据包, 我们点击Client Hello包看下详细信息,如下图 感觉ssl协议版本不对 然后我们修改了apache的配置,让代理服务

java地址映射关系,Spring MVC——基础(简介,使用,地址映射)

“大佬们”嘴中的SSH,SSM框架&#xff0c;我这种小白终于解除到第二个S了&#xff0c;关于Spring MVC框架&#xff0c;根据最近的学习发现&#xff0c;还是有很多不足和需要加强巩固的地方&#xff0c;所以&#xff0c;通过总结博客的方式将Spring MVC再次巩固学习一下。Spring…

scrapy爬取动态网页_scrapy_splash 设置随机请求头

本文为 霾大&#xff1a;scrapy_splash 爬取 js 加载网页初体验​zhuanlan.zhihu.com的补充在上面的文章中我们仅仅是初步完成了 scrapy_splash 的简单使用接下来我们将介绍如何是使得 splash 在 render.html &#xff08;默认&#xff09;访问网页时也能动态调整其请求头等&am…

机器学习模型开发必读:开源数据库最全盘点

开发 AI 和机器学习系统从来没有像现在这样方便。类似于 TensorFlow、Torch 和 Spark 这样的开源工具&#xff0c;在 AI 开发者群体中已是无处不在。再加上亚马逊 AWS、Google Cloud 等云服务带来的海量计算能力&#xff0c;将来使用笔记本电脑来训练 ML 模型或许不再难以想象。…

离散数学4

离散数学4&#xff1a;析取范式与合取范式 命题公式的两种规范表示方法&#xff0c;能表达真值表所能提供的一切信息。 命题变项及其否定统称作文字。仅由有限个文字构成的析取式叫简单析取式&#xff0c;仅由有限个文字构成的合取式叫简单合取式。 &#xff08;析取式就是由∨…

linux c之遍历字符串数组

1 问题 比如我们要遍历字符串数组&#xff0c;我们的思路一般是先求字符串数组的长度&#xff0c;然后再用for循环便利&#xff0c;其实没必要这样&#xff0c;我们直接在 字符串数组后面加上个NULL就行再去遍历 2 代码实现 #include <stdio.h>int main() {static con…

php之clone 复制对象以及__clone魔术方法

如果错误和不足请给予指出&#xff0c;谢谢~ (⊙&#xff3f;⊙) 在开始使用clone之前我们下先看以下一个小例子&#xff1a; <?php //首先定义一个test一个类 class Testclass {//成员变量是$value1public $value1; } //随后new一个obj1 $obj1 new Testclass(); //复…

java语言中的浮点型数据分为,Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou...

Java语言中的浮点型数据根据数据存储长度和数值精度的不同&#xff0c;进一步分为float型和double型&#xff0c;其中dou更多相关问题【单选题】下列因素中不是经济中内在稳定器的是【单选题】外在时滞是以下哪两者之间的时间&#xff1a;【单选题】当经济中存在失业时&#xf…

python查看图片的源代码_python实现图片筛选程序

今天因工作需要写了个小程序&#xff0c;用于在图片集中自动抽取需要的照片。该程序只是实现了基本功能&#xff0c;还有很多需要完善的地方&#xff0c;展示出来算是给自己鼓鼓气吧。该程序应用有一定特殊条件&#xff0c;因我选择的图片集是工业生产过程中自动拍摄生成的&…

C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果

很酷的效果&#xff0c;很值得好好去学习的哈。 重置工具箱&#xff1a; 新建一个WinForm程序,项目名称为TestDockPanelControl。选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--->>右键--->>选择项--->>浏览--- >>weiFenLuo.…

使用aspnetcore前后端分离开发,你一定要知道这个。

前言用过Vue单页面应用开发的&#xff0c;一定都知道Vue-router这个路由组件&#xff0c;它支持hash和history两种模式。HTML5 History 模式vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL&#xff0c;于是当 URL 改变时&#xff0c;页面不会重新加载。…