CYC-UIPickerView(省份+城市)

    @interface IkrboyViewController : UIViewController{  
        NSDictionary *dict;//用于存储省份-城市的数据  
        NSArray *provinceArray;//省份的数组  
        NSArray *cityArray;//城市的数组,在接下来的代码中会有根据省份的选择进行数据更新的操作  
    }  

在.m的viewDidLoad方法中加上初始化数据的处理。具体处理在initPicker方法

    - (void)viewDidLoad  
    {  
        [super viewDidLoad];  
        // Do any additional setup after loading the view, typically from a nib.  
        [self initPicker];  
    }  

    //初始化PickerView使用的数据源  
    -(void)initPicker{  
        NSBundle *bundle = [NSBundle mainBundle];  
        NSString *plistPath = [bundle pathForResource:@"provinces_cities" ofType:@"plist"];  
        dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];  
        provinceArray = [dict allKeys];  

        NSInteger selectedProvinceIndex = [self.pickerView selectedRowInComponent:0];  
        NSString *seletedProvince = [provinceArray objectAtIndex:selectedProvinceIndex];  
        cityArray = [dict objectForKey:seletedProvince];  
        NSLog(@"%d",[provinceArray count]);  
    }  

将数据绑定到UIPickerView

    //以下3个方法实现PickerView的数据初始化  
    //确定picker的轮子个数  
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {  
        return 2;  
    }  
    //确定picker的每个轮子的item数  
    - (NSInteger)pickerView:(UIPickerView *)pickerView  
    numberOfRowsInComponent:(NSInteger)component {  
        if (component == 0) {//省份个数  
            return [provinceArray count];  
        } else {//市的个数  
            return [cityArray count];  
        }  
    }  
    //确定每个轮子的每一项显示什么内容  
    #pragma mark 实现协议UIPickerViewDelegate方法  
    -(NSString *)pickerView:(UIPickerView *)pickerView  
                titleForRow:(NSInteger)row forComponent:(NSInteger)component {  
        if (component == 0) {//选择省份名  
            return [provinceArray objectAtIndex:row];  
        } else {//选择市名  
            return [cityArray objectAtIndex:row];  
        }  
    }  

随时监听UIPickerView的滚动。

    //监听轮子的移动  
    - (void)pickerView:(UIPickerView *)pickerView  
          didSelectRow:(NSInteger)row inComponent:(NSInteger)component {  
        if (component == 0) {  
            NSString *seletedProvince = [provinceArray objectAtIndex:row];  
            cityArray = [dict objectForKey:seletedProvince];  

            //重点!更新第二个轮子的数据  
             [self.pickerView reloadComponent:1];  

            NSInteger selectedCityIndex = [self.pickerView selectedRowInComponent:1];  
            NSString *seletedCity = [cityArray objectAtIndex:selectedCityIndex];  

            NSString *msg = [NSString stringWithFormat:@"province=%@,city=%@", seletedProvince,seletedCity];  
            NSLog(@"%@",msg);  
        }  
        else {  
            NSInteger selectedProvinceIndex = [self.pickerView selectedRowInComponent:0];  
            NSString *seletedProvince = [provinceArray objectAtIndex:selectedProvinceIndex];  

            NSString *seletedCity = [cityArray objectAtIndex:row];  
            NSString *msg = [NSString stringWithFormat:@"province=%@,city=%@", seletedProvince,seletedCity];  
            NSLog(@"%@",msg);  
        }  
    }  

利用下面的代码,获得UIPickerView的不同Component(滚轮)的选中的index

NSInteger selectedProvinceIndex = [self.pickerView selectedRowInComponent:0];  
NSInteger selectedCityIndex = [self.pickerView selectedRowInComponent:1]; 

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值