前几天用UIPickerView实现了一下三级联动具体的如下图

下面是实现方式

#import "ViewController.h"

#define FirstComponent

#define SubComponent

#define ThirdComponent

@interface ViewController ()

@property(nonatomic,retain)NSDictionary* dict;

@property(nonatomic,retain)NSArray* pickerArray;

@property(nonatomic,retain)NSArray* subPickerArray;

@property(nonatomic,retain)NSArray* thirdPickerArray;

@property(nonatomic,retain)NSArray* selectArray;

@end

@implementation ViewController

@synthesize dict=_dict;

@synthesize pickerArray=_pickerArray;

@synthesize subPickerArray=_subPickerArray;

@synthesize thirdPickerArray=_thirdPickerArray;

@synthesize selectArray=_selectArray;

- (void)viewDidLoad

{

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

NSString* plistPath=[[NSBundle mainBundle] pathForResource:@"Address" ofType:@"plist"];

_dict=[[NSDictionary alloc] initWithContentsOfFile:plistPath];

self.pickerArray=[_dict allKeys];

self.selectArray=[_dict objectForKey:[[_dict allKeys] objectAtIndex:0]];

if ([_selectArray count]>0) {

self.subPickerArray= [[self.selectArray objectAtIndex:0] allKeys];

}

if ([_subPickerArraycount]>0)
{

self.thirdPickerArray=[[self.selectArray objectAtIndex:0] objectForKey:[self.subPickerArray objectAtIndex:0]];

}

}

- (void)didReceiveMemoryWarning

{

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark --

#pragma mark--UIPickerViewDataSource

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

return3;

}

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

{

if (component==FirstComponent) {

return [self.pickerArray count];

}

if (component==SubComponent) {

return [self.subPickerArray count];

}

if (component==ThirdComponent) {

return [self.thirdPickerArray count];

}

return0;

}

#pragma mark--

#pragma mark--UIPickerViewDelegate

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

{

if (component==FirstComponent) {

return [self.pickerArray objectAtIndex:row];

}

if (component==SubComponent) {

return [self.subPickerArray objectAtIndex:row];

}

if (component==ThirdComponent) {

return [self.thirdPickerArray objectAtIndex:row];

}

return
nil;

}

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

{

NSLog(@"row is %d,Component is %d",row,component);

if (component==0) {

self.selectArray=[_dict objectForKey:[self.pickerArray objectAtIndex:row]];

if ([self.selectArray count]>0)
{

self.subPickerArray= [[self.selectArray objectAtIndex:0] allKeys];

}else{

self.subPickerArray=nil;

}

if ([self.subPickerArraycount]>0)
{

self.thirdPickerArray=[[self.selectArray objectAtIndex:0] objectForKey:[self.subPickerArray objectAtIndex:0]];

}else{

self.thirdPickerArray=nil;

}

[pickerView selectedRowInComponent:1];

[pickerView reloadComponent:1];

[pickerView selectedRowInComponent:2];

}

if (component==1) {

if ([_selectArraycount]>0&&[_subPickerArraycount]>0)
{

self.thirdPickerArray=[[self.selectArray objectAtIndex:0] objectForKey:[self.subPickerArray objectAtIndex:row]];

}else{

self.thirdPickerArray=nil;

}

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

}

[pickerView reloadComponent:2];

}

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component

{

if (component==FirstComponent) {

return90.0;

}

if (component==SubComponent) {

return120.0;

}

if (component==ThirdComponent) {

return100.0;

}

return0;

}

-(void)dealloc

{

self.dict=nil;

self.pickerArray=nil;

self.subPickerArray=nil;

self.thirdPickerArray=nil;

self.selectArray=nil;

[superdealloc];

}

@end

UIPickerView实现省 市 区三级联动的更多相关文章

  1. html实现 省——市——区三级联动

    html实现  省——市——区三级联动 html中实现三级联动是一个不错的demo,博主在这里跟大家分享一下实现的过程,以及自己在过程中出现的一些问题,仅供参考. 首先我们将全国的省市区数据导入进来, ...

  2. jqeury-地区三级联动

    html+js <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www ...

  3. AJAX实现三级联动

    省市区三级联动插件: 主页面:为方便使用,不用写过多代码,只写一个id为sanji的div,若别的页面要用,只需写一个id为sanji的div,加载上jQuery与sanji.js文件即可 <! ...

  4. 使用php ajax写省、市、区、三级联动

    题目要求: 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用china ...

  5. 使用 AJAX + 三级联动 实现分类出全国各地的省,市,区

    使用AJAX + 三级联动  实现分类出全国各地的省,市,区 也可以将下面的显示页面所写的 function循环,封装成js文件,就是在写代码软件里创建一个js文件,就和创建一个HTML或php文件一 ...

  6. jQuery三级联动效果代码(省、市、区)

    很长时间都不用jquery了,有人问我jquery写三级联动的插件我就写好了发出来吧,正好需要的人都可以看看. 一.html代码 <!DOCTYPE html> <html> ...

  7. ajax(省,市,县)三级联动

    下面我们用Jquery,ajax,做一个省,市,县的三级联动: 下面是我做三级联动下拉的步骤以及逻辑 第一步:先做一个省市区表格 第二步:建个PHP页面显示用我是在<body>里放< ...

  8. javascript 省、市、地县三级联动

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD&g ...

  9. vue+element实现省区市三级联动以及详细地址的输入

    Vue+elementui实现省区市三级联动+详细地址的输入 详细需求,需要手动更改用户所在的地址. 安装依赖项 npm install element-china-area-data -S 在组建中 ...

随机推荐

  1. Redis 如何导出数据

    Redis是一款支持多种数据类型的Key-Value数据库. 这里介绍下如何从Redis中导出数据. 数据是如何存储的?. Redis中是把数据保存到内存中的,但是它也会定期的把数据写会到硬盘中. R ...

  2. 从头开始编写一个Orchard网上商店模块(2) - 配置您的Orchard开发环境

    原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-par ...

  3. PHP使用SwiftMailer发送邮件

    用到了swiftmailer 的lib库 官方网址:http://swiftmailer.org/ require_once 'lib/swift_required.php';//给我发送邮件func ...

  4. CF29D - Ant on the Tree(DFS)

    题目大意 给定一棵树,要求你按给定的叶子节点顺序对整棵树进行遍历,并且恰好经过2*n-1个点,输出任意一条符合要求的路径 题解 每次从叶子节点开始遍历到上一个叶子节点就OK了, 这个就是符合要求的路径 ...

  5. 解决高版本 Google Chrome 扩展程序强制停用问题 -摘自网络

    1]前往这里下载你喜欢的语言的组策略模板 后缀为.adm (其他的文件自己看 https://docs.google.com/viewer?a=v&pid=sites&srcid=Y2 ...

  6. python seq

    missing parentheses in call to print  ==> python高版本 print("") name 'raw_input' is not d ...

  7. 最短路变形 poj3615&

    问题: 牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍. 输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍. 输入T代表牛要 ...

  8. 教程-脚本之Python

    1.百度python就可以下载到最新版本(Python3.3)     PS:我发现用2.7版本写的py文件用  Python3.3打开时,提示错误(print2.7不需要括号3.3必须加括号).2. ...

  9. nyoj 1022 最少步数【优先队列+广搜】

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  10. [三]JFreeChart实践二

    功能: 1.设置带色彩的柱状图 2.可以设置多组数据的展示 3.可以设置图标的背景色 4.可以设置柱与柱之间的距离 5.可以设置柱子上边是否显示具体的数值