UIPickerView是iOS中用来提供给用户选择的一个控件,就如平常我们经常看到很多APP需要我们填写地址时需要输入的省份、城市、地区,都是用的此控件来实现的。
下面就来看看要想在界面上显示一个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
接着就是在.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学习路上的一点心得,望共勉。