博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIPickerView 的 多重选择
阅读量:7080 次
发布时间:2019-06-28

本文共 4334 字,大约阅读时间需要 14 分钟。

#import "ViewController.h"

 

@interface ViewController (){

    //    储存第二个选取器

    NSArray *cityArr;

    NSArray *townArr;

}

 

@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;

@property (nonatomic,strong) NSArray *provinces;

@property (nonatomic,strong) NSArray *citys;

@property (nonatomic,strong) NSArray *towns;

@property (nonatomic,strong) NSMutableDictionary *PC;

@property (nonatomic,strong) NSMutableDictionary *CT;

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

 

    self.PC = [NSMutableDictionary dictionary];

    self.CT = [NSMutableDictionary dictionary];

 

    self.pickerView.delegate = self;

    self.pickerView.dataSource = self;

 

    self.provinces = @[@"山西省",@"江苏省",@"浙江省"];

 

    NSArray *arrSX = @[@"太原市",@"大同市",@"阳泉市",@"长治市",@"晋城市",@"朔州市"];

    NSArray *arrJS = @[@"南京市",@"无锡市",@"徐州市",@"常州市",@"苏州市"];

    NSArray *arrZJ = @[@"杭州市",@"宁波市",@"温州市",@"嘉兴市",@"湖州市",@"绍兴市",@"金华市",@"衢州市"];

    self.citys = @[arrSX, arrJS, arrZJ];

 

    for (int i = 0; i < self.provinces.count ; i++) {

        [self.PC addEntriesFromDictionary:@{

self.provinces[i]:self.citys[i]}];

    }

    

    

    //    根据第一个滚轮中的值,选取第二个滚轮中的值

    NSString *selectedState = [self.provinces objectAtIndex:0];

    NSArray *array = [self.PC objectForKey:selectedState];

    cityArr = array;

 

    

//  山西县城

    NSArray *arrTY = @[@"",@"",@"",@"",@"",@""];

    NSArray *arrDT = @[@"",@"",@"",@"",@""];

    NSArray *arrYQ = @[@"",@"",@"",@""];

    NSArray *arrCZ = @[@"",@"",@"",@"",@""];

    NSArray *arrJC = @[@"",@"",@"",@"",@""];

    NSArray *arrSZ = @[@"",@"",@"",@"",@"",@"",@""];

 

    NSArray *arrSXT = @[arrTY,arrDT,arrYQ,arrCZ,arrJC,arrSZ];

 

//  江苏县城

    NSArray *arrNJ = @[@"",@"",@"",@"",@""];

    NSArray *arrWX = @[@"",@"",@"",@"",@"",@""];

    NSArray *arrXZ = @[@"",@"",@"",@"",@"",@"",@"",@""];

    NSArray *arrCHZ = @[@"",@"",@"",@""];

    NSArray *arrSHZ = @[@"",@"",@"",@"",@""];

 

    NSArray *arrJST = @[arrNJ,arrWX,arrXZ,arrCHZ,arrSHZ];

 

//  浙江县城

    NSArray *arrHZ = @[@"",@"",@"",@"",@""];

    NSArray *arrNB = @[@"",@"",@"",@""];

    NSArray *arrWZ = @[@"",@"",@"",@"",@"",@""];

    NSArray *arrJX = @[@"",@"",@"",@"",@"",@"",@""];

    NSArray *arrHUZ = @[@"",@"",@"",@"",@"",@"",@"",@""];

    NSArray *arrSHX = @[@"",@"",@"",@"",@"",@""];

    NSArray *arrJH = @[@"",@"",@"",@"",@""];

    NSArray *arrQZ = @[@"",@"",@"",@"",@""];

 

    NSArray *arrZJT = @[arrHZ,arrNB,arrWZ,arrJX,arrHUZ,arrSHX,arrJH,arrQZ];

 

    self.towns = @[arrSXT, arrJST, arrZJT];

    

    NSMutableArray *strArr = [NSMutableArray array];

    for (NSArray *arr in self.citys) {

        for (NSString *str in arr) {

            [strArr addObject:str];

        }

    }

    NSMutableArray *townAM = [NSMutableArray array];

    for (NSArray *arr in self.towns) {

        for (NSArray *arr1 in arr) {

            [townAM addObject:arr1];

        }

    }

    

    for (int i = 0; i < strArr.count ; i++) {

        [self.CT addEntriesFromDictionary:@{

strArr[i]:townAM[i]}];

    }

 

    NSString *selectedState2 = [self.citys[0] objectAtIndex:0];

    NSArray *array2 = [self.CT objectForKey:selectedState2];

    townArr = array2;

}

 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return 3;

}

 

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

    if (component == 0) {

        return self.provinces.count;

    }else if (component == 1) {

        return [cityArr count];

    }

    return [townArr count];

}

 

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

    

    if (component == 0) {

        return [self.provinces objectAtIndex:row];

    }else if (component == 1){

        return [cityArr objectAtIndex:row];

    }

    return [townArr objectAtIndex:row] ;

}

 

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

{

    //    如果选取的是第一个选取器

    if (component == 0) {

        //        得到第一个选取器的当前行

        NSString *selectedState =[self.provinces objectAtIndex:row];

        

        //        根据从pickerDictionary字典中取出的值,选择对应第二个中的值

        NSArray *array = [self.PC objectForKey:selectedState];

        cityArr = array;

        [self.pickerView selectRow:0 inComponent:1 animated:YES];

        

        

        //        重新装载第二个滚轮中的值

        [self.pickerView reloadComponent:1];

    }else if (component == 1){

        //        得到第一个选取器的当前行

        NSString *selectedState1 =[cityArr objectAtIndex:row];

        //        根据从pickerDictionary字典中取出的值,选择对应第二个中的值

        NSArray *array = [self.CT objectForKey:selectedState1];

        townArr = array;

        [self.pickerView selectRow:1 inComponent:2 animated:YES];

        

        

        //        重新装载第二个滚轮中的值

        [self.pickerView reloadComponent:2];

 

    }

}

转载于:https://www.cnblogs.com/wugenbao/p/5648328.html

你可能感兴趣的文章
Numpy常用属性及方法
查看>>
惊天消息!美国重启病毒实验,或对人类造成巨大威胁
查看>>
一条SQL完成跨数据库实例Join查询
查看>>
BZOJ 1266 [AHOI2006]上学路线route
查看>>
名词小结:base href、GreaseMonkey、Varchar、char、网速的计算
查看>>
数据结构
查看>>
hadoop3.x的安装
查看>>
03 EM算法 - EM算法流程和直观案例
查看>>
使用uwolfer gerrit-rest-java-client获取Gerrit信息
查看>>
五分钟读懂UML类图
查看>>
中科创达副总裁孙力:AI视觉仍在路上,平台需求胜过算法
查看>>
Javascript基础之-Promise
查看>>
报名 | 清华方圆系列之大数据分析与可视化报告会将于下周举办
查看>>
react学习系列4 组件生命周期
查看>>
了解 php.ini
查看>>
异地容灾方案解析
查看>>
深入理解Vue的生命周期
查看>>
WPF's Style BasedOn
查看>>
.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计
查看>>
.NET服务安装、卸载、启动、停止、判断是否存在
查看>>