第一步初始化 UIPickerView *pickerview; //城市滚动表

NSDictionary *dict; //用于存储省份-城市的数据

NSArray *provinceArray; //省份的数组

NSArray *cityArray; //城市的数组

第二步需要引入代理 UIPickerViewDataSource,UIPickerViewDelegate,

第三步把拥有的地区从文件取出来 要文件留言NSBundle *bundle = [NSBundle mainBundle];

NSString *plistPath = [bundle pathForResource:@"city" ofType:@"plist"];

provinceArray=[NSArray arrayWithContentsOfFile:plistPath];

NSLog(@"-----------%@",provinceArray);

cityArray = [[provinceArray objectAtIndex:0] objectForKey:@"cities"];

NSLog(@"+ + + + + %@",cityArray);

pickerview = [[UIPickerView alloc]initWithFrame:CGRectMake(50, 200, 250, 100)];

pickerview.delegate =self;

pickerview.dataSource =self;

[self.View addSubview:pickerview];

//用来显示取出的地区名字

placelabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 55, Kwidth, 25)];

placelabel.backgroundColor = [UIColor redColor];

placelabel.textAlignment = NSTextAlignmentLeft;

[self.View addSubview:placelabel];

下面的为代理方法

//轮子个数

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

return 2;

}

//确定picker的每个轮子的item数

- (NSInteger)pickerView:(UIPickerView *)pickerView

numberOfRowsInComponent:(NSInteger)component {

if (component == 0) {//省份个数

return [provinceArray count];

} else {//市的个数

return [cityArray count];

}

}

//确定每个轮子的每一项显示什么内容

#pragma mark 实现协议UIPickerViewDelegate方法

-(NSString *)pickerView:(UIPickerView *)pickerView

titleForRow:(NSInteger)row forComponent:(NSInteger)component {

switch (component) {

case 0:

return [[provinceArray objectAtIndex:row] objectForKey:@"state"];

break;

case 1:

return [cityArray objectAtIndex:row];

break;

default:

return @"";

break;

}

}

//监听轮子的移动

- (void)pickerView:(UIPickerView *)pickerView

didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

// NSLog(@"1111111111111 %d",cityArray.count);

// NSLog(@"1111111111111 %d",provinceArray.count);

//

switch (component) {

case 0:

cityArray = [[provinceArray objectAtIndex:row] objectForKey:@"cities"];

[pickerView selectRow:0 inComponent:1 animated:YES];

[pickerView reloadComponent:1];

NSLog(@"%@",[[provinceArray objectAtIndex:row] objectForKey:@"state"]);

NSLog(@"%@",[cityArray objectAtIndex:0]);

pla = [[NSString alloc]initWithFormat:@"%@",[[provinceArray objectAtIndex:row] objectForKey:@"state"]];

placelabel.text = [NSString stringWithFormat:@"%@-%@",[[provinceArray objectAtIndex:row] objectForKey:@"state"],[cityArray objectAtIndex:0]];

break;

case 1:

NSLog(@"%@",[cityArray objectAtIndex:row]);

placelabel.text = [NSString stringWithFormat:@"%@-%@",pla,[cityArray objectAtIndex:row]];

break;

default:

break;

}

}

UIPickerView 创建中国地区显示 省份 市的更多相关文章

  1. JS 实现地区,省份,城市,县区4级联动

    刚学JS,实战一下,做一个省份信息4级联动. 但是网上查了都是3级的,没有4级,现在做一个的是带地区的4级联动,最简单的办法是修改别人的代码,最开始找到的事类似于下边这个的: 省市县关联菜单 < ...

  2. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  3. ios 在中国地区,24小时时间格式 系统设定下 获得12小时制时间的方法

    如题,在中国地区,24小时时间格式 系统设定下,如果单单使用 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 之后,无论用hh ...

  4. WPF动态创建Image的显示问题

    原文:WPF动态创建Image的显示问题 最近学习WPF,看到一篇教程讲解如何动态创建Image控件,自己练手时候无论如何也显示不出图片.刚开始以为是图片的路径有问题,可后来将图片的路径设为相对路径或 ...

  5. 插入中国所有省和市的SQL语句--以后用

    需要做根据省市过滤查询的,不得已写入数据库,这个留着方便以后用. 首先创建两张表 drop database if exists BSM; create database BSM; use BSM; ...

  6. ASP.NET - 演练:创建网页以显示 XML 数据

    数据通常是以 XML 格式提供给 Web 应用程序的.但是,XML 数据本质上是分层的,因此您可能希望能够在基于列表的控件中使用 XML 数据,如 GridView 或 DropDownList 控件 ...

  7. 关于直接创建视图UITableViewController显示(初学)

    今天渣渣想直接创建一个UITableView视图作为根视图来用结果发现有警告,才明白TableView和view是不能直接作为根视图的,需要放在ViewController上.做个笔记详细了解下. 参 ...

  8. Linux编程 20 shell编程(shell脚本创建,echo显示信息)

    一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell ...

  9. 全国地区的省份、城市、区县 最新Sql脚本

    IF (EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_Province]') AND type =' ...

随机推荐

  1. GCD与多线程

    GCD与多线程 GCD,全称Grand Central Dispath,是苹果开发的一种支持并行操作的机制.它的主要部件是一个FIFO队列和一个线程池,前者用来添加任务,后者用来执行任务. GCD中的 ...

  2. VS XCOPY

    有时在项目开发过程中,某个项目不直接依赖于另外一个项目,也就是说在编码上不需要使用另外一个项目上的代码,但实际运行的时候需要用到,我们通常的做法是把另外项目中需要用到的DLL拷过来放到该项目的BIN文 ...

  3. MFC控件(7):Split Button

    VS2008中可以看到MFC有一个叫Split Button的控件,要想看它的效果,瞧下QQ那聊天窗口的"发送", "消息记录"这两个按钮就知道了.实际上就是还 ...

  4. 【Linux】CentOS 学习笔记之一(安装配制)

    如何打开命令窗口:应用程序>系统工具>终端 如何获取root 权限:在终端下,输入su 再输入密码(密码不显示在屏幕上) 如何将英文版转换成中文: [root@localhost ~]# ...

  5. 解决TXT乱码问题

    初装Ubuntu,打开windows保存的txt文件很可能会遇到各种乱码问题. 下面是wiki ubuntu里的解决办法: Gedit中文乱码 缺省配置下,用 Ubuntu 的文本编辑器(gedit) ...

  6. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  7. android 组件内部实现触摸事件,更改背景

    当我们需要实现触摸事件的时候,通常就会想到OnTouchEvent这个方法,它能够获取触摸点的坐标,而组件同样也有这样的一个功能,使用这个功能,可以实现组件在父布局界面上移动,缩放,更改背景图片.这里 ...

  8. php提供service总结---wsdl篇

    越来越多的架构偏向于面向接口和面向服务的设计了,当我们把抽象的落地变为实际的时候,我们感觉到了代码的厚度.而当我们把具体的业务再进一步抽象,我们就能发现藏在细节深处的回馈. php可以提供servic ...

  9. samba安装与配置

    1.安装软件包rpm -q samba samba-common samba-client cifs-utilsyum -y install samba samba-common samba-clie ...

  10. Oracle全角和半角处理函数

    1.TO_MULTI_BYTE语法: TO_MULTI_BYTE(String) 功能: 计算所有单字节字符都替换为等价的多字节字符的String.该函数只有当数据库字符集同时包含多字节和单字节的字符 ...