iOS界面编程-UIPickerView

本文介绍了UIPickerView类的使用方法及其实现原理。UIPickerView可以创建一个或多列的选择器,用户通过滚动选择器来挑选所需的值。文章还详细解释了如何通过实现UIPickerViewDataSource和UIPickerViewDelegate的方法来自定义选择器的外观。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的介绍

UIPickerView类实现了对象,称为选择器视图,使用一个转轮或老虎机的比喻来显示一个或多个值集。用户通过旋转轮子来选择值,以便将所需的值与一个选择指示器对应。
它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活。

相关属性方法

属性:
1.获取UIPickerView组件的数量
@property(nonatomic, readonly) NSInteger numberOfComponents
2.获取某个指定组件的行数
- numberOfRowsInComponent:
3.获取某个指定组件的行的大小。
- rowSizeForComponent:
方法:
1.重新加载所有组件
- reloadAllComponents
2 重新加载某个特定的组件。
- reloadComponent:
3、在picker view指定的一个组件中,选择一行
- selectRow:inComponent:animated:
4、返回指定组件指定行的序列
- selectedRowInComponent:
5、返回给定组件,给定行的视图
- viewForRow:forComponent:
6delegate 属性

7dataSource 属性

8显示选择指示器
showsSelectionIndicator Property

相关例子

-(void)initPickerView{
   UIPickerView *pickView = [[UIPickerView alloc]initWithFrame:CGRectMake(20, 100, self.view.bounds.size.width-40, 100)];
    pickView.delegate = self;
    pickView.dataSource = self;
    [self.view addSubview:pickView];

}

其中UIPickerViewDataSource必须实现的两个代理方法为:
#pragma  remark -UIPickerViewDataSource

// 设置显示列数为多少.这里设置只显示一行
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}

// 设置每个组件(列)的行为多少,这里设置都为10行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 10;
}

#pragma  remark -UIPickerViewDelegate
// 设置每个组件的宽度为多少。
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
    return 140.0;
}
//设置每个组件行高为多少
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
    return 40.0;
}

- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return  [NSString stringWithFormat:@"test %ld",(long)row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    NSLog(@"用户选择了第%ld行",(long)row);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

house.zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值