一、概述
iOS UIPickerView是一种数据选择器控件,可以让用户通过滑动选择一系列数据。它通常用于创建表单、选项卡、菜单等用户输入界面。
使用UIPickerView可以使用户在获得信息时更加方便,同时也可以提高应用的可用性和友好性。
二、UIPickerView的使用
1、创建UIPickerView
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; pickerView.delegate = self; pickerView.dataSource = self; [self.view addSubview:pickerView];
需要注意的是,我们要实现UIPickerViewDataSource和UIPickerViewDelegate两个协议,才能为UIPickerView提供数据和显示。
2、实现UIPickerViewDataSource协议
numberOfComponentsInPickerView
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 3; }
此方法返回UIPickerView中包含的“列数”,也就是有几个数据集合需要操作。例如日期、时间需要操作年/月/日,或者一个选择器里需要选择同时需要姓名、年龄、性别。
numberOfRowsInComponent
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return self.dataArray.count; }
此方法返回每一列需要展示的数据数量。需要注意,这里返回的数量应该跟数据源中对应列的数据集合数量一致,否则会出现程序崩溃。
3、实现UIPickerViewDelegate协议
viewForRow
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { UILabel *titleLabel = [[UILabel alloc] init]; [titleLabel setText:[self.dataArray objectAtIndex:row]]; return titleLabel; }
此方法返回每一列上的每一个行的view视图,也就是显示在picker中每一行上自定义的视图。在此方法中,我们通常会利用常见的UIKit控件来自定义view对象。
didSelectRow
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { NSLog(@"你选择的是%ld列中的%ld行", component, row); }
此方法是当行被选择后的回调,返回选中的行及所属的列。这里可以利用该方法来处理行选择器中的数据内容。
三、样式定制
设置每行显示内容的字体大小和字体颜色
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { UILabel *titleLabel = [[UILabel alloc] init]; [titleLabel setText:[self.dataArray objectAtIndex:row]]; [titleLabel setTextAlignment:NSTextAlignmentCenter]; [titleLabel setFont:[UIFont systemFontOfSize:16]]; [titleLabel setTextColor:[UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1]]; return titleLabel; }
设置分割线颜色
pickerView.separatorColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1];
设置每行的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { return 40.0f; }
设置每行的宽度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { return 80; }
四、小结
本文详细的介绍了iOS UIPickerView的使用,从创建UIPickerView到实现UIPickerViewDataSource、UIPickerViewDelegate两个协议的方法,再到样式定制等相关知识点的讲解,基本能够帮助理解和快速上手。在应用的开发过程中,合理使用UIPickerView能够使用户使用体验得到很大的提升。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/194242.html