iOS UIPickerView详解

发布时间:2023-05-18

一、概述

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];

需要注意的是,我们要实现UIPickerViewDataSourceUIPickerViewDelegate两个协议,才能为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到实现UIPickerViewDataSourceUIPickerViewDelegate两个协议的方法,再到样式定制等相关知识点的讲解,基本能够帮助理解和快速上手。在应用的开发过程中,合理使用UIPickerView能够使用户使用体验得到很大的提升。