用UIPicker做一个类似省市联动选择的例子

简介: 用UIPicker做一个类似省市联动选择的例子 ViewController.h: #import @interface ForthViewController :UIViewController @property (retain,nonato...

用UIPicker做一个类似省市联动选择的例子

ViewController.h:

#import <UIKit/UIKit.h>

@interface ForthViewController :UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>

@property (retain,nonatomic) IBOutlet UIPickerView *picker;

@property(nonatomic,retain)NSDictionary *dictionary;

@property(nonatomic,retain)NSArray *states;  //省

@property(nonatomic,retain)NSArray *zips;//市

@end

ViewController.m:

#import"ForthViewController.h"

#define STATE_COMPONENT0

#define ZIP_COMPONENT 1

@interfaceForthViewController ()


@end


@implementation ForthViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

       // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [superviewDidLoad];

    NSBundle *bundle = [NSBundle mainBundle];//目录,地址

    NSURL * url = [bundle URLForResource:@"statedictionary"withExtension:@"plist"];

    NSString *path = [bundle pathForResource:@"statedictionary"ofType:@"plist"];

    NSLog(@"%@",url);

    NSLog(@"%@",path);

    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

    self.dictionary = dic;

    NSLog(@"%@",self.dictionary);

    NSArray *arr = [self.dictionaryallKeys];

    self.states = arr;

    arr= [self.dictionaryobjectForKey:self.states[0]];

    self.zips = arr;

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

//一个picker有几个compont

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    return2;

}

//每个组件有几行数据

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

{

    //创建数据

    if(component ==STATE_COMPONENT)

    {

        return [self.states count];   //动态获取数字

    }

    else

    {

        return [self.zips count];

    }

}

//每行显示的内容

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

{

    if (component ==STATE_COMPONENT) {

        return [self.states objectAtIndex:row];

    }

    else

    {

        return [self.zips objectAtIndex:row];

    }

}

//选择一行就触发的事件

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

{

    if (component ==STATE_COMPONENT) {

        NSString *str = [self.statesobjectAtIndex:row];

        NSArray *arr = [self.dictionaryvalueForKey:self.states[row]];

        self.zips = arr;

       //因为component = ZIP_COMPONENT的数据发生改变,所以要重新导入

        [pickerView reloadComponent:ZIP_COMPONENT];

       //防止越界,row超过现在的总行数

        [pickerViewselectRow:0inComponent:ZIP_COMPONENTanimated:YES];

    }

}


- (void)dealloc {

    [_pickerrelease];

    [_dictionaryrelease];

    [_statesrelease];

    [_zipsrelease];

    [superdealloc];

}

@end


项目源码:http://download.csdn.net/detail/s10141303/5958499

相关文章
|
4月前
|
Java
设计信息录入界面,完成人员基本信息的录入工作,其中籍贯中涉及的“省、市”能实现联动,即选择“省”时,“市”会根据选择的“省”做相应的变换。
该博客文章展示了如何设计一个包含联动下拉列表(省、市)的信息录入界面,使用Java Swing组件库实现人员基本信息的录入,并提供了完整的界面布局和事件处理代码。
设计信息录入界面,完成人员基本信息的录入工作,其中籍贯中涉及的“省、市”能实现联动,即选择“省”时,“市”会根据选择的“省”做相应的变换。
|
前端开发 JavaScript PHP
php开发实战分析(10):城市区县联动筛选
php开发实战分析(10):城市区县联动筛选
112 1
vue+echarts实现疫情(全国新增趋势、境外输入省市TOP5)
vue+echarts实现疫情(全国新增趋势、境外输入省市TOP5)
140 0
vue+echarts实现疫情(全国新增趋势、境外输入省市TOP5)
|
XML 前端开发 数据格式
第五例:省市联动2| 学习笔记
快速学习第五例:省市联动2
第五例:省市联动2| 学习笔记
|
设计模式 Arthas Java
面向切面编程(AOP)与代理模式的关系
面向切面编程(AOP)与代理模式的关系
|
XML 前端开发 数据格式
第五例:省市联动2|快速学习
快速学习第五例:省市联动2
120 0
第五例:省市联动2|快速学习
|
XML 前端开发 数据格式
第五例:省市联动1|学习笔记
快速学习第五例:省市联动1
第五例:省市联动1|学习笔记
|
XML 前端开发 数据格式
第五例:省市联动1| 学习笔记
快速学习第五例:省市联动1
|
索引
好客租房145-渲染城市列表(展示城市索引)
好客租房145-渲染城市列表(展示城市索引)
161 0
好客租房145-渲染城市列表(展示城市索引)
|
索引
好客租房144-渲染城市列表
好客租房144-渲染城市列表
131 0
好客租房144-渲染城市列表