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

运行效果:

posted @ 2013-04-10 16:40  XuShao  阅读(633)  评论(0编辑  收藏  举报