CYC-UIPickerView(省份+城市)

来源:互联网 发布:河南郑州淘宝衣族 编辑:程序博客网 时间:2024/05/11 12:53
    @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]; 

这里写图片描述

0 0