
iOS UIPickerView和UIDatePicker控件
发布日期:2021-05-14 01:35:57
浏览次数:10
分类:精选文章
本文共 3429 字,大约阅读时间需要 11 分钟。
UIPickerView控件
UIPickerView是一个功能强大的组件,通过代理和数据源的方式来实现功能。这类组件广泛用于选择器功能,如选择省份、城市等。
主要方法
UIPickerView提供了多种方法来操作和定制选择器。
reloadAllComponents
:刷新所有列。reloadComponent:(NSInteger)component
:刷新指定列。selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated
:选择指定列中的指定行,支持动画效果。
UIPickerView的代理方法用于指定列的高度、宽度以及数据展示方式。
数据源接口
数据源需要提供组件数和每列的行数。
- (NSInteger)numberOfComponentsInPickerView+(UIPickerView *)- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
示例使用场景
假设我们需要一个两列的选择器,这里第一列是省份,第二列是对应的城市。当用户选择一个省份后,第二列将显示该省份对应的城市。我们可以通过以下代码实现这一功能:
- (void)viewDidLoad { [super viewDidLoad]; self.cityArray = @[ @{@"province": @"江苏", @"city": @[@"南京市", @"无锡市", @"徐州市", @"常州市", @"苏州市", @"南通市", @"连云港市", @"淮安市", @"盐城市", @"扬州市", @"镇江市", @"泰州市", @"宿迁市"]}, @{@"province": @"浙江", @"city": @[@"杭州", @"宁波", @"温州", @"绍兴", @"湖州", @"嘉兴", @"金华", @"衢州", @"台州", @"丽水", @"舟山"]} ]; UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 200)]; pickerView.delegate = self; pickerView.dataSource = self; self.selectProvince = 0; self.selectCity = 0; [self.view addSubview:pickerView];}#pragma mark - UIPickerViewDataSource- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 2;}- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == 0) { return self.cityArray.count; } else { NSArray *city = self.cityArray[self.selectProvince][@"city"]; return city.count; }}#pragma mark - UIPickerViewDelegate- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == 0) { return self.cityArray[row][@"province"]; } else { NSArray *city = self.cityArray[self.selectProvince][@"city"]; return city[row]; }}- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == 0) { self.selectProvince = row; self.selectCity = 0; [pickerView reloadComponent:1]; [pickerView selectRow:0 inComponent:1 animated:YES]; } else if (component == 1) { self.selectCity = row; } NSLog(@"selectProvince = %@ selectCity = %@", self.cityArray[self.selectProvince][@"province"], self.cityArray[self.selectProvince][@"city"][self.selectCity]);}
UIDatePicker控件
UIDatePicker用于显示日期选择,可以根据需求选择不同的模式和风格。
模式选择
- **
datePickerMode
**属性可以选择四种模式:时间、日期、日期和时间、计时。 - **
preferredDatePickerStyle
**属性选择三种风格:自动选择、滚轮、袖珍、内联模式。
在袖珍模式下,滚轮仅在点击时弹出修改界面。
重要属性
minimumDate
:最小日期(除计时模式)。maximumDate
:最大日期(除计时模式)。countDownDuration
:计时模式下的时间总秒数。minuteInterval
:分钟间隔,默认为1。
计时模式下支持滚轮显示,普通模式下效果更优。
示例代码
以下是创建一个日期选择器的示例代码:
- (void)viewDidLoad { [super viewDidLoad]; UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 200)]; datePicker.datePickerMode = UIDatePickerModeDate; datePicker分钟间隔设置为15且计时模式的`countDownDuration`设置为3600秒。 [self.view addSubview: date_picker];}#pragma mark - UIDatePickerDelegate- (void)datePicker:(UIDatePicker *)picker dateChanged:(NSDate *)date { // 处理日期变动事件}- (void)datePicker:(UIDatePicker *)picker selectedDate:(NSDate *)date { // 处理选中日期事件}
通过上述代码,我们可以根据需求配置日期选择器的类型和行为,灵活应对多种场景。最初选择自动模式可以根据设备屏幕适当调整布局。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月26日 04时30分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python爬虫--09 大学排名
2019-03-11
Linux/Mac下python3配置
2019-03-11
linux--练习001-基础类型
2019-03-11
python内存地址和编译字节码
2019-03-11
Flask--简介
2019-03-11
Flask模板--过滤器与测试器
2019-03-11
16 python基础-恺撒密码
2019-03-11
17 python基础--异常处理
2019-03-11
06.1 python基础--结构控制
2019-03-11
Frame--Api框架
2019-03-11
Frame--WEB框架
2019-03-11
java内存模型 JMM
2019-03-11
idea 在Debug 模式中运行语句中函数的方法
2019-03-11
springboot2.1.1开启druid数据库连接池并开启监控
2019-03-11
docker
2019-03-11
《朝花夕拾》金句摘抄(五)
2019-03-11
《朝花夕拾》金句摘抄(六)
2019-03-11