UIPickerView的属性和常用方法 举例:显示省份和城市

  1 #import "ViewController.h"
  2
  3 @interface ViewController ()
  4
  5 @property(strong, nonatomic) UIPickerView * pickerView;
  6 @property(strong, nonatomic) UILabel * label;
  7 @property(strong, nonatomic) UIButton * button;
  8 @property (nonatomic, strong)  NSDictionary  *pickerData; //保存全部数据
  9 @property (nonatomic, strong)  NSArray  *pickerProvincesData;//当前的省数据
 10 @property (nonatomic, strong)  NSArray  *pickerCitiesData;//当前的省下面的市数据
 11
 12 @end
 13
 14 @implementation ViewController
 15
 16 - (void)viewDidLoad {
 17     [super viewDidLoad];
 18     // Do any additional setup after loading the view, typically from a nib.
 19
 20     self.pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 48, 320, 162)];
 21     self.pickerView.backgroundColor = [UIColor groupTableViewBackgroundColor];
 22     [self.view addSubview:self.pickerView];
 23     self.label = [[UILabel alloc]initWithFrame:CGRectMake(63, 285, 195, 33)];
 24     self.label.textAlignment = NSTextAlignmentCenter;
 25     self.label.text = @"显示信息";
 26     self.label.backgroundColor = [UIColor groupTableViewBackgroundColor];
 27     [self.view addSubview:self.label];
 28     self.button = [[UIButton alloc]initWithFrame:CGRectMake(88, 413, 144, 44)];
 29     [self.button setTitle:@"显示在Label上" forState:UIControlStateNormal];
 30     self.button.backgroundColor = [UIColor brownColor];
 31     [self.button addTarget:self action:@selector(tapShow) forControlEvents:UIControlEventTouchUpInside];
 32     [self.view addSubview:self.button];
 33
 34     NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"PC" ofType:@"plist"];
 35     //获取属性列表文件中的全部数据
 36     NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
 37     self.pickerData = dict;
 38
 39     //省份名数据
 40     self.pickerProvincesData =  [self.pickerData allKeys];
 41
 42     //默认取出第一个省的所有市的数据
 43     NSString *seletedProvince = [self.pickerProvincesData objectAtIndex:0];
 44     self.pickerCitiesData = [self.pickerData objectForKey:seletedProvince];
 45
 46     self.pickerView.dataSource = self;
 47     self.pickerView.delegate = self;
 48
 49
 50 }
 51
 52 - (void)tapShow
 53 {
 54     NSInteger row1 = [self.pickerView selectedRowInComponent:0];
 55     NSInteger row2 = [self.pickerView selectedRowInComponent:1];
 56     //NSLog(@"row1 = %lu",row1);
 57     //NSLog(@"row2 = %lu",row2);
 58     NSString *selected1 = [self.pickerProvincesData objectAtIndex:row1];
 59     NSString *selected2 = [self.pickerCitiesData objectAtIndex:row2];
 60
 61     NSString *title = [[NSString alloc] initWithFormat:@"%@,%@",
 62                        selected1,selected2];
 63
 64     self.label.text = title;
 65
 66 }
 67
 68 #pragma mark 实现协议UIPickerViewDataSource方法
 69 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
 70     return 2;
 71 }
 72 //初始化时component先为0,后为1,返回省份个数和和市的个数,以确定省份的行数和市的临时初始化行数。此后选择省的时候component为1,返回市的个数
 73 - (NSInteger)pickerView:(UIPickerView *)pickerView
 74 numberOfRowsInComponent:(NSInteger)component {
 75     if (component == 0)
 76     {//省份个数
 77         return [self.pickerProvincesData count];
 78     } else
 79     {//市的个数
 80         return [self.pickerCitiesData count];
 81     }
 82
 83 }
 84
 85 #pragma mark 实现协议UIPickerViewDelegate方法
 86 //选择省份的时候component先为0,后为1。然后选择市的时候返回市所在的row号。将其省和市显示在pickerview的显示条上
 87 -(NSString *)pickerView:(UIPickerView *)pickerView
 88             titleForRow:(NSInteger)row forComponent:(NSInteger)component {
 89     //NSLog(@"row2 = %lu",row);
 90     //NSLog(@"component2 = %lu",component);
 91     if (component == 0)
 92     {//选择省份名
 93         return [self.pickerProvincesData objectAtIndex:row];
 94     } else
 95     {//选择市名
 96         return [self.pickerCitiesData objectAtIndex:row];
 97     }
 98 }
 99 //只有选择省份的时候component为0,返回省所在的row号,然后根据省份取出省所有的市。选择市的时候component为1。(作用为重新加载数据到pickerview上)
100 - (void)pickerView:(UIPickerView *)pickerView
101       didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
102     //NSLog(@"row3 = %lu",row);
103     //NSLog(@"component3 = %lu",component);
104     if (component == 0)
105     {
106         NSString *seletedProvince = [self.pickerProvincesData objectAtIndex:row];
107         NSArray *array = [self.pickerData objectForKey:seletedProvince];
108         //NSLog(@"array = %@",array);
109         self.pickerCitiesData = array;//将所选省的所有市存入pickerCitiesData
110         [self.pickerView reloadComponent:1];
111     }
112 }
113 - (void)didReceiveMemoryWarning {
114     [super didReceiveMemoryWarning];
115     // Dispose of any resources that can be recreated.
116 }
117
118 @end

1、常用属性

//显示选中框

showsSelectionIndicator

2、常用方法

//返回rows的所有行号行号

- (NSInteger)numberOfRowsInComponent:(NSInteger)component;

//重新加载所有的元素

- (void)reloadAllComponents;

//通过赋值加载所选择的数据

- (void)reloadComponent:(NSInteger)component;

//协议UIPickerViewDataSource方法

//确定轮子的列数

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

return 2;

}

//初始化时component先为0,后为1,返回省份个数和和市的个数,以确定省份的行数和市的临时初始化行数。此后选择省的时候component为1,返回市的个数

- (NSInteger)pickerView:(UIPickerView *)pickerView

numberOfRowsInComponent:(NSInteger)component {

if (component == 0)

{//省份个数

return [self.pickerProvincesData count];

} else

{//市的个数

return [self.pickerCitiesData count];

}

}

//协议UIPickerViewDelegate方法

//选择省份的时候component先为0,后为1。然后选择市的时候返回市所在的row号。将其省和市显示在pickerview的显示条上

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

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

//NSLog(@"row2 = %lu",row);

//NSLog(@"component2 = %lu",component);

if (component == 0)

{//选择省份名

return [self.pickerProvincesData objectAtIndex:row];

} else

{//选择市名

return [self.pickerCitiesData objectAtIndex:row];

}

}

//只有选择省份的时候component为0,返回省所在的row号,然后根据省份取出省所有的市。选择市的时候component为1。(作用为重新加载数据到pickerview上)

- (void)pickerView:(UIPickerView *)pickerView

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

//NSLog(@"row3 = %lu",row);

//NSLog(@"component3 = %lu",component);

if (component == 0)

{

NSString *seletedProvince = [self.pickerProvincesData objectAtIndex:row];

NSArray *array = [self.pickerData objectForKey:seletedProvince];

//NSLog(@"array = %@",array);

self.pickerCitiesData = array;//将所选省的所有市存入pickerCitiesData

[self.pickerView reloadComponent:1];

}

}

时间: 2024-10-29 19:09:55

UIPickerView的属性和常用方法 举例:显示省份和城市的相关文章

UIPickerView常用属性 -- 小总结

UIPickerView常用属性 -- 小总结 一.UIPickerView 1.UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; // 代理(用来告诉UIPickerView每1列的每1行显示什么内容,监听UIPickerView的选择) @property(nonatomic,assign) id<UI

iOS开发UIPickerView常用属性方法

// //  ViewController.m //  UIPickerViewAll #import "ViewController.h" @interface ViewController () @end @implementation ViewController /* UIPickView控件常用的方法和属性: (1)  - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 返回Picke

关于右键属性与du -sh显示的文件大小不一致的解决

du -sh filename(其实我们经常用du -sh *,显示当前目录下所有的文件及其大小,如果要排序再在后面加上 | sort -n) 关于右键属性与du -sh显示的文件大小不一致的解决: 总之:我的理解就是du查到的是实际硬盘上的block大小,包括很多隐藏文件,软,硬链接,以及由于磁盘格式划分等等的问题,导致了不一致, 右键属性相当于 du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹  及除开那些多余的东西. 而du -sh 则是

table中tr的display属性在火狐中显示不正常,IE中显示正常

最近在作项目的时候碰到一个问题,就是需要AJAX来交互显示<tr> </tr> 标签内的东西,按照常理,对于某一单元行需要显示时,使用:display:block属性,不需要显示时使用display:none属性,而且这样做 在IE浏览器中显示正常,没有任何问题. 但是当用Firefox浏览时却出现了布局错乱的问题,然后通FireBug去看了下源码,调试下了,发现是display:block属性搞的鬼. 1.当表格为多列的情况下,属性为"display:block&quo

.net工作流引擎ccflow开发平台属性功能的隐藏显示介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明  工作流设计 工作流快速开发平台   业务流程管理   bpm工作流系统  java工作流主流框架  自定义工作流引擎 应用背景: 驰骋工作流系统大大小小的功能高达2000多项,所以不是多有的功能都能被企业所使用的,为了系统的简介他们需要隐藏一些暂时用不到的功能,但是一段时间后可能就需要某些原来隐藏掉的功能,所以单纯的从代码里隐藏是不够理想的,这时候就需要做一个同意管理的功能来自由处

选择省份时,自动显示对应省份的城市

在很多网页中,都会有让用户选择城市的选项,那么,就需要我们用js来实现,当用户选择了省份,自动选择对应省份的城市. <head>   <title></title>   <meta http-equiv="content" content="text/html" charset="utf-8"/>   <script type="text/javascript">  

基于MVC+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动

为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此对基于MVC的Web界面继续进行一些研究和优化,力求在功能和界面上保持和Winform一致,本文主要介绍在我的CRM系统中用到的全国省份.城市.行政区三者的两种效果,在Winform上实现没问题,在Web上基于MVC的EasyUI实现,同样也没有问题. 1.Winform上省份.城市.行政区的联动效果 在很早的时候,我在Winform框架的一篇随笔<Winform开发框架之字典管理模块的更新,

基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动

为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此对基于MVC的Web界面继续进行一些研究和优化,力求在功能和界面上保持和Winform一致,本文主要介绍在我的CRM系统中用到的全国省份.城市.行政区三者的两种效果,在Winform上实现没问题,在Web上基于MVC的EasyUI实现,同样也没有问题. 1.Winform上省份.城市.行政区的联动效果 在很早的时候,我在Winform框架的一篇随笔<Winform开发框架之字典管理模块的更新,

(转)基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动

http://www.cnblogs.com/wuhuacong/p/3841338.html 为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此对基于MVC的Web界面继续进行一些研究和优化,力求在功能和界面上保持和Winform一致,本文主要介绍在我的CRM系统中用到的全国省份.城市.行政区三者的两种效果,在Winform上实现没问题,在Web上基于MVC的EasyUI实现,同样也没有问题. 1.Winform上省份.城市.行政区的联动效