IOS开发(十二):UIDatePicker
通过转轮界面提供一系列多值选项,类似于外面的自动贩卖机。通常用于选择日期时间、国家城市等。
日期选择器:专门用于处理日期和时间;
自定义选择器视图:可以根据需要配置成显示任意数量的组件。
一、UIDatePicker简介
UIDatePicker是一个控制器类,它是UIController的子类,专门用于接受日期、时间和持续时长的输入。
1、时间间隔
可以将分钟表盘设置为以不同的时间间隔来显示分钟,只要该间隔要能够让60整除,默认是1分钟。
datePicker.minuteInterval = 5;
2、日期范围
可以通过设置mininumDate,maxinumDate属性来指定日期范围,如果用户超出这一范围的日期,表盘会回滚到最近的有效日期。
如果这两个属性其中任意一个没有设置的话,则默认行为将会允许用户选择过去/未来的任意日期,比如可以用在用户生日选择上。
3、设置日期
使用setDate方法,如果使用了动画,则表盘会滚动到指定的日期。
[datePicker setDate:maxDate animated:YES];
4、读取日期
NSDate *d = datePicker.date;
5、委托
由于UIDatePicker是UIControl的子类,所以还能在UIControl类的通知结构中挂接一个委托:
[datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
这样只要用户选择了一个新的日期,就会调用:
-(void)dateChanged:(id)sender{
UIDatePicker *contr = (UIDatePicker *)sender;
NSDate *d = contr.date;
//...
}
二、UIDatePicker使用示例
1、创建项目
创建一个新的项目,单击.xib文件,打开IB,拖动一个UIDatePicker控件到视图上。

2、创建映射:

顺便为按钮建立一个Action映射,名为buttonPressed,事件默认为Touch Up Inside。然后设置UIDatePicker的Maximum为2100-12-31,勾选Min和Max框。
4、实现buttonPressed代码和viewDidLoad()方法
//按钮按下去触发的方法
- (IBAction)buttonPressed:(id)sender {
//获取UIDatePicker所选择的日期和时间
NSDate *selected = [datePicker date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm +0800"];
NSString *destDateString = [dateFormatter stringFromDate:selected];
NSString *message = [[NSString alloc] initWithFormat:@"The Date and Time selected is:%@",destDateString];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Date Time Selected"
message:message
delegate:nil
cancelButtonTitle:@"YES"
otherButtonTitles:nil];
[alert show];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSDate *now = [NSDate date];
[datePicker setDate:now animated:YES];
}
5、运行程序

三、UIPickerView
#import <UIKit/UIKit.h> @interface ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate> @property (weak, nonatomic) IBOutlet UIPickerView *mypickerView; @property (weak, nonatomic) IBOutlet UILabel *myLabel; @property(retain,nonatomic)NSArray *pickerViewData; - (IBAction)showSelectedMsg; @end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize mypickerView;
@synthesize myLabel;
@synthesize pickerViewData;
- (void)viewDidLoad
{
NSArray *array = [[NSArray alloc] initWithObjects:@"One",
@"Two",
@"Three",
@"Four",nil];
self.pickerViewData = array;
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)showSelectedMsg {
NSInteger row = [mypickerView selectedRowInComponent:0];
NSString *mys = [pickerViewData objectAtIndex:row];
myLabel.text = mys;
}
//设置组件的列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
//设置组件行数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [pickerViewData count];
}
//将pickerViewData数据填充到PickerView
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [pickerViewData objectAtIndex:row];
}
@end

运行效果:


浙公网安备 33010602011771号