#import "ViewController.h" #import "CZProvinces.h" @interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate> @property (nonatomic, strong) NSArray *provinces; @property (nonatomic, assign) NSInteger indexOfProvince; @end @implementation ViewController //懒加载 - (NSArray *)provinces { if (!_provinces) { NSArray *array = [CZProvinces provinceList]; _provinces = array; } return _provinces; } - (void)viewDidLoad { [super viewDidLoad]; // [self provinces]; NSLog(@"%@",self.provinces); } #pragma mark - 数据源方法 // returns the number of 'columns' to display. - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 2; } // returns the # of rows in each component.. //设置每列有多少行 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == 0) { // 如果是第一列,则返回province的数目。 return self.provinces.count; } // 设置index来记载选定的省份。 CZProvinces *pro = self.provinces[self.indexOfProvince]; return pro.cities.count; } #pragma mark - 设置显示内容 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == 0) { // 如果是第一列 CZProvinces *pro = self.provinces[row]; return pro.name; } CZProvinces *selectedProvince = self.provinces[self.indexOfProvince]; return selectedProvince.cities[row]; } #pragma mark - 选中行 - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == 0) { // 设置index为row。 self.indexOfProvince = row; [pickerView reloadComponent:1]; [pickerView selectRow:0 inComponent:1 animated:YES]; } } @end
效果如下: