您的位置:首页 > 产品设计 > UI/UE

IOS简单的选择器实现UIPickerView(省+市+区)

2015-08-28 09:34 141 查看
轮子的样式:



area.plist的样式:



1.解析文件

1.1解析省

-(void)ProvinceArray
{

//获取第一层Dictionary
self.allDic = [[NSDictionary alloc]initWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"area" ofType:@"plist"]];
self.provinceArray = [[NSMutableArray alloc]init];
for(int i = 0; i < self.allDic.count; i++)
{
[self.provinceArray addObject:[[[self.allDic objectForKey:[NSString stringWithFormat:@"%d",i]] allKeys] objectAtIndex:0]];
}
}


1.2解析市

-(void)CityArray:(NSInteger)row
{
//获取第三层Dictionary
self.province = [[self.allDic objectForKey:[NSString stringWithFormat:@"%ld",row]] objectForKey:self.provinceArray[row]];
self.cityArray = [[NSMutableArray alloc]init];
for(int i = 0;i < self.province.count; i++)
{
[self.cityArray addObject:[[[self.province objectForKey:[NSString stringWithFormat:@"%d",i]] allKeys] objectAtIndex:0]];
}
}


1.3解析区

-(void)CountyArray:(NSInteger)row
{
self.countyArray = [[NSMutableArray alloc]init];
self.countyArray = [[self.province objectForKey:[NSString stringWithFormat:@"%ld",row]] objectForKey:self.cityArray[row]];
}


2.绑定并初始化UIPickerView

//以下3个方法实现PickerView的数据初始化
//确定picker的轮子个数
#pragma mark 实现协议UIPickerViewDataSource的方法
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//设置几个滚轮
return 3;
}
//确定picker的每个轮子的item数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch (component) {
case 0://省份个数
return [self.provinceArray count];
break;
case 1://市的个数
return [self.cityArray count];
break;
case 2://县的个数
return [self.countyArray count];
break;
default:
break;
}
return 0;
}
//确定每个轮子的每一项显示什么内容
#pragma mark 实现协议UIPickerViewDelegate的方法
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch (component) {
case 0://选择省份
return [self.provinceArray objectAtIndex:row];
break;
case 1://选择市
return [self.cityArray objectAtIndex:row];
break;
case 2://选择县
return [self.countyArray objectAtIndex:row];
break;
default:
break;
}
return 0;
}


3.监听轮子的滚动

//监听轮子的移动
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (component == 0) {
[self CityArray:row];
[self CountyArray:0];
[self.pickerView reloadComponent:1];
[self.pickerView reloadComponent:2];
}
if (component == 1) {
[self CountyArray:row];
[self.pickerView reloadComponent:2];
}
}


程序代码+area.plist文件 http://files.cnblogs.com/files/guoyongzhi/PickerView.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: