UIPickerView

///多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 3;
}

///每列返回数据
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    if (component == 0) return self.area1Models.count;
    else if (component == 1) return self.area2Models.count;
    return self.area3Models.count;
}

///显示的标题
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    TBAreaModel *model;
    if (component == 0) model = self.area1Models[row];
    else if (component == 1)  model = self.area2Models[row];
    else model = self.area3Models[row];
    return model.name;
}

///行高
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
    return 44;
}

选择对应列,刷新后行列的数据源

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    if (component == 0)  [self pickerViewSelect:row];
    if (component == 1) {
        TBAreaModel *model = self.area2Models[row];
        self.area3Models  = model.childrenList;
        [pickerView reloadAllComponents];
        [pickerView selectRow:0 inComponent:2 animated:YES];//更新后面列显示第一个
    }
}

- (void)pickerViewSelect:(NSInteger)row{
    TBAreaModel *model = self.area1Models[row];
    self.area2Models  = model.childrenList;
    self.area3Models =  model.childrenList.firstObject.childrenList;
    [self.pickerView reloadAllComponents];
    [self.pickerView selectRow:0 inComponent:1 animated:YES];//更新后面列显示第一个
    [self.pickerView selectRow:0 inComponent:2 animated:YES];//更新后面列显示第一个
}

获取选择的结果

    NSInteger proviceIndex = [self.pickerView selectedRowInComponent:0];
    NSInteger cityIndex = [self.pickerView selectedRowInComponent:1];
    NSInteger countryIndex = [self.pickerView selectedRowInComponent:2];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容