×
广告

iOS学习之UIPickerView控件

96
罗朝福
2016.08.23 21:29* 字数 289

UIPickerView是iOS中用来提供给用户选择的一个控件,就如平常我们经常看到很多APP需要我们填写地址时需要输入的省份、城市、地区,都是用的此控件来实现的。

UIPickerView控件

下面就来看看要想在界面上显示一个UIPickerView控件该如何做?

  //实例化一个选择器
    UIPickerView *picker=[[UIPickerView alloc]initWithFrame:CGRectMake(50, 40, 320, 200)];
    picker.delegate=self;
    picker.backgroundColor=[UIColor orangeColor];
    //设置初始化选中的行和列
    [picker selectRow:1 inComponent:0 animated:YES];
    [picker selectRow:1 inComponent:1 animated:YES];
    [picker selectRow:3 inComponent:2 animated:YES];
    [self.window addSubview:picker];

控件显示出来了,那么就要去绑定数据。在我们绑定数据之前必须先在.h文件在继承2个协议:

//实现2个协议
@interface AppDelegate : UIResponder <UIApplicationDelegate,UIPickerViewDataSource,UIPickerViewDelegate>

接着就是在.m文件中去实现协议的方法,设定控件相对应的属性和绑定数据:

//选择器显示数据时访问它,确定显示多少列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    //本选择器只显示1列
    return 3;
}

设置每个列里面显示多少行数据:

//选择器显示数据时访问它,确定显示每个列显示多少行
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    if (component==0) {
        return [self.province count];
    }
    if (component==1) {
        return [self.city count];
    }
    else{
        return [self.area count];
    }
}

初始化数据:

    self.province=[NSArray arrayWithObjects:@"四川",@"湖北",@"浙江",@"上海", nil];
    self.city=[NSArray arrayWithObjects:@"成都",@"武汉",@"杭州",@"上海", nil];
    self.area=[NSArray arrayWithObjects:@"锦江区",@"高新区",@"江夏区",@"青山区",@"萧山区",@"金山区", nil];

给控件绑定数据:

//设置选择器显示的数据
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    switch (component) {
        case 0:
            return self.province[row];
            break;
        case 1:
            return self.city[row];
            break;
        default:
            return self.area[row];
            break;
    }
}

设置选择器上文字颜色,对齐方式等相关属性:

//设置选择器上的数据,设置文字相关属性
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
    UILabel *lbl=[[UILabel alloc]init];
    //设置文字颜色
    lbl.textColor=[UIColor whiteColor];
    //设置文字居中
    lbl.textAlignment=NSTextAlignmentCenter;
    switch (component) {
        case 0:
            lbl.text=self.province[row];
            break;
            case 1:
            lbl.text=self.city[row];
            break;
        default:
            
            lbl.text=self.area[row];
            break;
    }
    return lbl;
}

当用户选择了数据,我们就需要在后台获取用户选择的数据,那么就会调用如下方法:

//获取选择行和列的值
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    NSLog(@"行:%ld,列:%ld",row,component);
    switch (component) {
        case 0:
            NSLog(@"%@",self.province[row]);
            break;
        case 1:
            NSLog(@"%@",self.city[row]);
            break;
        default:
            NSLog(@"%@",self.area[row]);
            break;
    }
}

一个完整的选择器控件就是这么展现出来了

iOS学习路上的一点心得,望共勉。

学习笔记
Web note ad 1