plist部分:
调用部分:
- (void)textFieldDidBeginEditing:(UITextField *)textField { WJCityPikerView *piker = [[WJCityPikerView alloc]initWithModelBlock:^(WJPikerDataModel *model) { NSLog(@"%@ %@ %@ %@ %@ %@",model.provinceName,model.cityName,model.disName,model.provinceId,model.cityId,model.disId); [self.view endEditing:YES]; } backBlock:^{ NSLog(@"返回"); [self.view endEditing:YES]; }]; textField.inputView = piker; }
内部:
1.取出plist中的信息
//总数据 - (NSArray *)dataArray { if (!_dataArray) { NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"city" ofType:@"plist"]; _dataArray = [[NSArray alloc]initWithContentsOfFile:plistPath]; } return _dataArray; }
2.创建省,市,区三个数组分别装查找到的省市区的信息
@property (nonatomic,strong)NSMutableArray *provenceArray; @property (nonatomic,strong)NSMutableArray *cityArray; @property (nonatomic,strong)NSMutableArray *areaArray;
3.滚动滚轮在数组里面查找省市区的信息并将他们添加到相应的数组中
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { switch (component) { case 0: { WJCityPlist *plist2 = self.provenceArray[row]; self.cityArray = [[NSMutableArray alloc]init]; [self.dataArray enumerateObjectsUsingBlock:^(NSDictionary *dic, NSUInteger idx, BOOL * _Nonnull stop) { if ([dic[@"pid"]integerValue] == [plist2.Id integerValue]) { WJCityPlist *plist = [[WJCityPlist alloc]initWithDic:dic]; [self.cityArray addObject:plist]; } }]; WJCityPlist *plist3 = self.cityArray[0]; self.areaArray = [[NSMutableArray alloc]init]; [self.dataArray enumerateObjectsUsingBlock:^(NSDictionary *dic, NSUInteger idx, BOOL * _Nonnull stop) { if ([dic[@"pid"]integerValue] == [plist3.Id integerValue]) { WJCityPlist *plist = [[WJCityPlist alloc]initWithDic:dic]; [self.areaArray addObject:plist]; } }]; [_piker selectRow:0 inComponent:1 animated:NO]; [_piker reloadAllComponents]; [_piker reloadComponent:1]; [_piker reloadComponent:2]; _indexprovence = row; break; } case 1: { WJCityPlist *plist3 = self.cityArray[row]; self.areaArray = [[NSMutableArray alloc]init]; [self.dataArray enumerateObjectsUsingBlock:^(NSDictionary *dic, NSUInteger idx, BOOL * _Nonnull stop) { if ([dic[@"pid"]integerValue] == [plist3.Id integerValue]) { WJCityPlist *plist = [[WJCityPlist alloc]initWithDic:dic]; [self.areaArray addObject:plist]; } }]; [_piker selectRow:0 inComponent:2 animated:NO]; [_piker reloadComponent:2]; _indexcity = row; } break; case 2: _indexaera = row; break; default: break; } NSLog(@"%ld %ld %ld",_indexprovence,_indexcity,_indexaera); }
效果图: