个人使用pickerView心得
数据源来自plist文件
-(void)initPlistArray {
NSString *path = [[NSBundle mainBundle] pathForResource:@"city2" ofType:@"plist"];
self.pArrs = [NSArray arrayWithContentsOfFile:path];
for (NSDictionary *dict in self.pArrs) {
NSString *provinceName = dict[@"state"];
[self.<span style="background-color: rgb(255, 255, 0);">CitiesArray</span> addObject:provinceName]; //Component 0 数据源
self.tempArrs = dict[@"cities"];
}
//获取compont1默认数据 (安徽省)
NSArray *arr = self.pArrs[0][@"cities"];
for (NSDictionary *dictt in arr) {
[self.<span style="background-color: rgb(255, 255, 51);">citiesArrR</span> addObject:dictt[@"city"]]; // Component 1 默认数据源
}
}
代理方法如下:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"didSelectRow ______");
if (component == 0) {
NSLog(@"component province did selected");
// NSLog(@"???? %@",self.CitiesArray);
self.provinceCode = self.pArrs[row][@"code"];
self.provinceName = self.pArrs[row][@"state"];
<span style="background-color: rgb(102, 255, 153);"> self.tempArrs = self.pArrs[row][@"cities"];
[self.citiesArrR removeAllObjects];
for (NSDictionary *dic in self.tempArrs) {
[self.citiesArrR addObject:dic[@"city"]];
}</span>
// NSLog(@"num 1 ??%@",self.citiesArrR[0]);
// NSLog(@"self.citiesArrR is %@",self.citiesArrR);
// [pickerView selectedRowInComponent:1];
<span style="background-color: rgb(102, 255, 255);"> [pickerView selectRow:0 inComponent:1 animated:YES];
[pickerView reloadComponent:1];</span>
}else {
// NSLog(@"%ld",row);
// NSLog(@"tempArr is %@",self.tempArrs);
// NSLog(@"???? ++ %@",self.tempArrs[row][@"city"]);
self.cityCode = self.tempArrs[row][@"code"];
self.cityName = self.tempArrs[row][@"city"];
}
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if (component == 0) {
return self.CitiesArray.count;
}else {
return self.citiesArrR.count;
}
}
-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component {
return 65;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 2;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0) {
return self.CitiesArray[row];
}else {
return [self.citiesArrR objectAtIndex:row];
}
}