CYC-UIPickerView(省份+城市)
2015-11-04 10:16
465 查看
@interface IkrboyViewController : UIViewController{ NSDictionary *dict;//用于存储省份-城市的数据 NSArray *provinceArray;//省份的数组 NSArray *cityArray;//城市的数组,在接下来的代码中会有根据省份的选择进行数据更新的操作 }
在.m的viewDidLoad方法中加上初始化数据的处理。具体处理在initPicker方法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self initPicker]; } //初始化PickerView使用的数据源 -(void)initPicker{ NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"provinces_cities" ofType:@"plist"]; dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; provinceArray = [dict allKeys]; NSInteger selectedProvinceIndex = [self.pickerView selectedRowInComponent:0]; NSString *seletedProvince = [provinceArray objectAtIndex:selectedProvinceIndex]; cityArray = [dict objectForKey:seletedProvince]; NSLog(@"%d",[provinceArray count]); }
将数据绑定到UIPickerView
//以下3个方法实现PickerView的数据初始化 //确定picker的轮子个数 - (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 { if (component == 0) {//选择省份名 return [provinceArray objectAtIndex:row]; } else {//选择市名 return [cityArray objectAtIndex:row]; } }
随时监听UIPickerView的滚动。
//监听轮子的移动 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == 0) { NSString *seletedProvince = [provinceArray objectAtIndex:row]; cityArray = [dict objectForKey:seletedProvince]; //重点!更新第二个轮子的数据 [self.pickerView reloadComponent:1]; NSInteger selectedCityIndex = [self.pickerView selectedRowInComponent:1]; NSString *seletedCity = [cityArray objectAtIndex:selectedCityIndex]; NSString *msg = [NSString stringWithFormat:@"province=%@,city=%@", seletedProvince,seletedCity]; NSLog(@"%@",msg); } else { NSInteger selectedProvinceIndex = [self.pickerView selectedRowInComponent:0]; NSString *seletedProvince = [provinceArray objectAtIndex:selectedProvinceIndex]; NSString *seletedCity = [cityArray objectAtIndex:row]; NSString *msg = [NSString stringWithFormat:@"province=%@,city=%@", seletedProvince,seletedCity]; NSLog(@"%@",msg); } }
利用下面的代码,获得UIPickerView的不同Component(滚轮)的选中的index
NSInteger selectedProvinceIndex = [self.pickerView selectedRowInComponent:0]; NSInteger selectedCityIndex = [self.pickerView selectedRowInComponent:1];
相关文章推荐
- winform异型不规则界面设计的实现方法
- Android中设置只有程序第一次运行才显示的界面实现思路
- hta 实现的五子棋界面
- android开发之欢迎界面的小例子
- C#中载入界面的常用方法
- Android判断现在所处界面是否为home主桌面的方法
- android 引导界面的实现方法
- VC 界面库皮肤库相关信息珍藏
- Android中界面实现全屏显示的两种方式
- 简单做出不丑设计
- extmail 界面修改
- QT程序启动界面的使用
- The Book of Qt 4 翻译: 2.2 界面和处理逻辑的分离
- 软件界面交互和易用性改进总结
- WP7界面设计与交互指南中英译本(附下载)
- 微软发布Windows Phone 7技术预览版(多图)(1)
- wxpython笔记
- 修改SecureCRT终端的Home和End功能键
- 最简单的Windows win32 API 程序开发方法
- Java图形界面设计