通过转轮界面提供一系列多值选项,类似于外面的自动贩卖机。通常用于选择日期时间、国家城市等。
日期选择器:专门用于处理日期和时间;
自定义选择器视图:可以根据需要配置成显示任意数量的组件。
一、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
运行效果: