UIKit-UIDatePicker和UIPickerView

本文详细介绍了如何在iOS应用中实现项目选择框(UIPickerView)和时间选择框(UIDatePicker),包括初始化、配置、数据源和代理方法。同时,文章还提供了日期格式化的方法及时间选择器的几种显示模式,以及如何使用NSDateFormatter来展示时间的详细步骤。

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

一、日期选择框(UIDatePicker)
UIKit-UIDatePicker和UIPickerView

二、项目选择框视图(UIPickerView)
UIKit-UIDatePicker和UIPickerView
Github源码下载(更新中)

//
// PickerViewController.m
// JXHDemo
//
//  Created by919575700@qq.com on 10/27/15.
//  Copyright (c)2015 Jiangxh. All rights reserved.
//

#import"PickerViewController.h"

@interfacePickerViewController ()
 
@property(nonatomic, strong)UIPickerView *pickerView;
 
@property(nonatomic, strong)UIDatePicker *datePicker;
 
@property(nonatomic, strong)NSDateFormatter *dateFormatter;

@end

@implementationPickerViewController
 
- (void)viewDidLoad{
   [super viewDidLoad];
   self.view.backgroundColor = RGBColor(230, 230,230);
    // 1.项目选择框UIPickerView
   //[self openPickerView];
   // 2.日期选择框UIDatePicker
   [self openDatePicker];
}
 
-(void)openPickerView {
   //初始化坐标,尺寸会使用默认的,自己设置无效随便设置
   _pickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, ApplicationH/3, 0, 0)];
    //背景色
   _pickerView.backgroundColor = [UIColorwhiteColor];
   //显示指示器
   _pickerView.showsSelectionIndicator =YES;
    //设置代理
   _pickerView.delegate = self;
   //数据协议
   _pickerView.dataSource =self;
   //取得列数
   NSLog(@"列数:%li",(long)[_pickerViewnumberOfComponents]);
   //取得某一列的行数
   NSLog(@"第一列的行数:%li",(long)[_pickerViewnumberOfRowsInComponent:0]);
   //某一列的尺寸
   //CGSize size = [_pickerViewrowSizeForComponent:0];
   //重新加载所有列
   //[_pickerView reloadAllComponents];
   //重新加载某一列
   //[_pickerView reloadComponent:0];
   //使某一列的某一行滚动到视图中心
   [_pickerView selectRow:3 inComponent:0animated:YES];
    //取得选择了的某一列的某一行
   NSInteger row = [_pickerViewselectedRowInComponent:0];
   NSLog(@"第一列选择的行数下标为:%li",(long)row);
   //显示选择框
   [self.view addSubview:_pickerView];
}
#pragma mark -UIPickerView的协议
 
//设置选择框的列数
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView {
   return 3;
}
//设置每一列的行数
-(NSInteger)pickerView:(UIPickerView *)pickerViewnumberOfRowsInComponent:(NSInteger)component {
   return 5;
}
 
//设置每一列的行高
-(CGFloat)pickerView:(UIPickerView *)pickerViewrowHeightForComponent:(NSInteger)component {
   return 20;
}
//设置每一列的宽度
-(CGFloat)pickerView:(UIPickerView *)pickerViewwidthForComponent:(NSInteger)component {
   return 100;
}
//设置某行某列的显示标题
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)rowforComponent:(NSInteger)component {
   return [[NSString alloc]initWithFormat:@"列%li行%li",(long)component,(long)row];
}
//设置某行某列的属性标题
//-(NSAttributedString *)pickerView:(UIPickerView *)pickerViewattributedTitleForRow:(NSInteger)rowforComponent:(NSInteger)component {
//   return [[NSAttributedString alloc]initWithString:@"个性化文字"];
//}
//设置某行某列的显示图标
//- (UIView*)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)rowforComponent:(NSInteger)component reusingView:(UIView *)view{
//   return [[UIView alloc] init];
//}
//选择了某行某列,每次滚动改变数据都会触发
-(void)pickerView:(UIPickerView *)pickerViewdidSelectRow:(NSInteger)row inComponent:(NSInteger)component{
   NSLog(@"选择了第%li列第%li行",component,row);
}

 
-(void)openDatePicker {
   //初始化坐标,尺寸会使用默认的,自己设置无效随便设置
   _datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, ApplicationH/3, 0, 0)];
   //背景色
   _datePicker.backgroundColor = [UIColorwhiteColor];
    //添加到视图显示
   [self.view addSubview:_datePicker];
   //设置时间选择器的时间为当前时间,其实不设置默认也是当前时间
   [_datePicker setDate:[NSDate date]];
   //设置选择框的类型:只显示年月日
   [_datePickersetDatePickerMode:UIDatePickerModeCountDownTimer];
   //设置中文时间选择器
   [_datePicker setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"zh_Hans_CN"]];
   //定义时间显示格式
   [_dateFormattersetDateFormat:@"yyyy-MM-dd"];
   //获取时间选择器的时间字符串
   NSString *dateString = [_dateFormatterstringFromDate:_datePicker.date];
   NSLog(@"时间选择器初试时间为:%@",dateString);
}
@end


 时间选择器的几种显示模式:

 UIDatePickerModeTime,          //显示小时和分钟,以及根据本地系统的设置显示上午和下午

 UIDatePickerModeDate,          //显示年月日

 UIDatePickerModeDateAndTime   //根据本地系统时间格式显示年月日星期小时和分钟,以及根据本地系统的设置显示上午和下午

 UIDatePickerModeCountDownTimer, // 显示用于计时器的小时和分钟

 

UIKit-UIDatePicker和UIPickerView

 NSDateFormatter的时间显示格式:

参考博文:http://blog.sina.com.cn/s/blog_67b27b60010130mr.html

 纪元的显示:

 G显示AD,也就是公元

 年的显示:

 yy年的后面2位数字

 yyyy显示完整的年

 月的显示:

 M显示成1~121位数或2位数

 MM显示成01~12,不足2位数会补0

 MMM英文月份的缩写,例如:Jan

 MMMM英文月份完整显示,例如:January

 日的显示:

 d显示成1~311位数或2位数

 dd显示成01~31,不足2位数会补0

 星期的显示:

 EEE星期的英文缩写,如Sun

 EEEE星期的英文完整显示,如,Sunday

 /下午的显示:

 aa显示AMPM

 小时的显示:

 H显示成0~231位数或2位数(24小时制

 HH显示成00~23,不足2位数会补0(24小时制)

 K显示成0~121位数或2位数(12小時制)

 KK显示成0~12,不足2位数会补0(12小时制)

 分的显示:

 m显示0~591位数或2位数

 mm显示00~59,不足2位数会补0

 秒的显示:

 s显示0~591位数或2位数

 ss显示00~59,不足2位数会补0

 S毫秒的显示

 时区的显示:

 z/ zz /zzz PDT

 zzzzPacificDaylight Time

 Z / ZZ /ZZZ -0800

 ZZZZGMT-08:00

 vPT

 vvvvPacificTime



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr_厚厚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值