美文网首页
ios PickView 选择器

ios PickView 选择器

作者: 万忍 | 来源:发表于2017-02-19 19:33 被阅读128次

    1.#import "ViewController.h"@interface ViewController (){

    NSArray *_province;

    NSDictionary *_city;

    NSDictionary *_country;

    }

    @end

    2.数据

    //省

    _province = @[@"北京", @"广西", @"广东"];

    //市

    _city = @{

    @"北京":@[@"朝阳区", @"东城区", @"西城区"],

    @"广西":@[@"桂林市", @"南宁市"],

    @"广东":@[@"惠州市", @"广州市", @"深圳市",@"东莞市"]

    //县区

    _country = @{

    @"朝阳区":@[@"朝阳区1", @"朝阳区2", @"朝阳区3"],

    @"东城区":@[@"东城区1", @"东城区2",@"东城区3",@"东城区4"],

    @"西城区":@[@"西城区1", @"西城区2", @"西城区3",@"西城区4"],

    @"桂林市":@[@"桂林市1", @"桂林市2", @"桂林市3"],

    @"南宁市":@[@"南宁市1", @"南宁市2",@"南宁市3",@"南宁市4"],

    @"惠州市":@[@"惠州市1", @"惠州市2", @"惠州市3",@"惠州市4"],

    @"广州市":@[@"广州市1", @"广州市2", @"广州市3"],

    @"深圳市":@[@"深圳市1", @"深圳市2",@"深圳市3",@"深圳市4"],

    @"东莞市":@[@"东莞市1", @"东莞市2", @"东莞市3",@"东莞市4"],

    };

    3.绑定self.picker.dataSource = self;self.picker.delegate = self;

    4.方法

    #pragma mark - 该方法的返回值决定该控件包含多少列

    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView

    {

    return 3;

    }

    #pragma mark - 该方法的返回值决定该控件指定列包含多少个列表项

    -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

    if (0 == component)

    {

    return _province.count;

    }

    if (1 == component) {

    NSInteger rowProvince = [pickerView selectedRowInComponent:0];

    NSString *provinceName = _province[rowProvince];

    NSArray *citys = _city[provinceName];

    return citys.count;

    }else{

    NSInteger rowProvince = [pickerView selectedRowInComponent:0];

    NSString *provinceName = _province[rowProvince];

    NSArray *citys = _city[provinceName];

    NSInteger rowCity = [pickerView selectedRowInComponent:1];

    NSString *cityName = citys[rowCity];

    NSArray *country = _country[cityName];

    return country.count;

    }

    }

    #pragma mark - 该方法返回的NSString将作为UIPickerView中指定列和列表项的标题文本

    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

    {

    if (0 == component) {

    return _province[row];

    }

    if(1 == component){

    NSInteger rowProvince = [pickerView selectedRowInComponent:0];

    NSString *provinceName = _province[rowProvince];

    NSArray *citys = _city[provinceName];

    return citys[row];

    }else{

    NSInteger rowProvince = [pickerView selectedRowInComponent:0];

    NSString *provinceName = _province[rowProvince];

    NSArray *citys = _city[provinceName];

    NSInteger rowCity = [pickerView selectedRowInComponent:1];

    NSString *cityName = citys[rowCity];

    NSArray *country = _country[cityName];

    return country[row];

    }

    }

    6.关联

    #pragma mark - 当用户选中UIPickerViewDataSource中指定列和列表项时激发该方法

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

    {

    if(0 == component){

    [pickerView reloadComponent:1];

    [pickerView reloadComponent:2];

    }

    if(1 == component)

    [pickerView reloadComponent:2];

    NSInteger rowOne = [pickerView selectedRowInComponent:0];

    NSInteger rowTow = [pickerView selectedRowInComponent:1];

    NSInteger rowThree = [pickerView selectedRowInComponent:2];

    NSString *provinceName = _province[rowOne];

    NSArray *citys = _city[provinceName];

    NSString *cityName = citys[rowTow];

    NSArray *countrys = _country[cityName];

    NSLog(@"%@~%@~%@", _province[rowOne], citys[rowTow],countrys[rowThree]);

    }

    相关文章

      网友评论

          本文标题:ios PickView 选择器

          本文链接:https://www.haomeiwen.com/subject/vgbjwttx.html