IOS简单的选择器实现UIPickerView(省+市+区)
2015-08-28 09:34
141 查看
轮子的样式:
area.plist的样式:
1.解析文件
1.1解析省
1.2解析市
1.3解析区
2.绑定并初始化UIPickerView
3.监听轮子的滚动
程序代码+area.plist文件 http://files.cnblogs.com/files/guoyongzhi/PickerView.zip
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
相关文章推荐
- PHP的Include和require
- POJ 2533 Longest Ordered Subsequence(LIS)
- 如何让segue失去跳转功能
- UI设计-不简单?简单(1)
- EasyUI datagrid datetimebox扩展
- 你给我解析清楚,都有了CALayer了,为什么还要UIView
- iOS NSValue
- 详解 CALayer 和 UIView 的区别和联系
- 利用UIRefreshControl实现tableView下拉刷新
- Win10 Build 10532运行上手高清截图 改进右键菜单
- StringBuffer & StringBuilder
- Win10 Build 10532手机版iso镜像什么时候发布? 9月15日左右
- Win10 Build 10532预览版更新了哪些内容弄?三项重要改进汇总
- Win10 Build 10532发布 64位Chrome程序启动时崩溃
- 最新Win10 Build 10532预览版更新内容汇总
- HDOJ 题目4010 Query on The Trees(Link Cut Tree连接,删边,路径点权加,路径点权最大值)
- C#中要使ListBox使用AddRange()时,能够触发SelectedValueChanged事件
- New THUer | 如何提高科研效率
- 求序列中满足Ai < Aj > Ak and i < j < k的组数 树状数组 HIT 2275 Number sequence
- 移动手机组态软件UI设计思路探讨