码迷,mamicode.com
首页 > 其他好文 > 详细

用UIpickView实现省市的联动

时间:2016-03-12 23:00:30      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>

@property(strong,nonatomic)UIPickerView *pickView;

//定义一个可变数组用于存放省的数据

@property(strong,nonatomic)NSMutableArray *Statearry;

//定义一个可变数组用于存放市的数据

@property(strong,nonatomic)NSMutableArray *Citiesarry;

//定义一个集合分别存省和市的数据

@property(strong,nonatomic)NSArray *arry;

@end

 

#import "ViewController.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //获取数据

    NSString *path=[[NSBundle mainBundle] pathForResource:@"city" ofType:@"plist"];    

    //初始化省和市的数组

    self.Statearry=[NSMutableArray array];

    self.Citiesarry=[NSMutableArray array];

    //ayyr这个大数组存放所有的省市

    self.arry=[NSArray arrayWithContentsOfFile:path];

 

    //获取省份的,将取出来的省份数据放在省的可变集合Statearry里

    for (NSDictionary *arr in self.arry)

    {

        [self.Statearry addObject:arr[@"State"]];

    }

    

    

    //创建pickView

    self.pickView=[[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 414, 200)];

    self.pickView.backgroundColor=[UIColor grayColor];

    

    self.pickView.delegate=self;

    self.pickView.dataSource=self;

    [self.view addSubview:self.pickView]; 

#pragma mark 数据源 Method numberOfComponentsInPickerView

 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    //两列

    return 2;

}

 

#pragma mark 数据源 Method pickerViewOfRows

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

{

    if (component==0)

    {

        //省份的个数

        return self.Statearry.count;

    }

    else

    {

        //市的个数

        return self.Citiesarry.count;

    }

}

 #pragma mark delegate 显示信息的方法

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

{

    if (component==0)

    {

        //选择的省份

        return self.Statearry[row];

    }

    else

    {

        //选择的市

        return self.Citiesarry[row];

    }  

}

#pragma mark 选中行的信息

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

{

    if (component==0)

    {

        

        //清空上一次市的那一列留下来的数据

        [self.Citiesarry removeAllObjects];

        //定义一个index,找出第一个滚动条里面的所有省对应的下标找出来,赋值给index

        NSInteger index=[pickerView selectedRowInComponent:0];

        //遍历出所有市

        for (NSDictionary *city in self.arry[index][@"Cities"])

        {

            //将遍历出来市追加到存放市的集合里

            [self.Citiesarry addObject:city[@"city"]];

        }

//        NSLog(@"%@",self.Citiesarry);

    

        //更新第二个滚轮的数据

        [self.pickView reloadComponent:1];

    }

    else

    {

        //显示取出来的省和市

        NSString *message=[NSString stringWithFormat:@"你选择的是%@的%@?",self.Statearry[[pickerView selectedRowInComponent:0]],self.Citiesarry[row]];

        

        //设置弹出框的标题

        UIAlertController *alert=[UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];

        

        //设置按钮名称

        UIAlertAction *okAction=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

            

        }];

        //设置按钮名称

        UIAlertAction *cancelAction=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];

        //将按钮加到提示框里面

        [alert addAction:okAction];

        [alert addAction:cancelAction];

        //

        [self presentViewController:alert animated:YES completion:nil];

    }       

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

@end

 

用UIpickView实现省市的联动

标签:

原文地址:http://www.cnblogs.com/layios/p/5270277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!