zoukankan      html  css  js  c++  java
  • 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

    运行效果:

  • 相关阅读:
    SQLServer 使用ADSI执行分布式查询ActiveDorectory对象
    GridView的DataFormatString
    我的第一篇博客
    delphi for php 帮助文档的笔记(二)
    用delphiforphp来编写算法注册机第一节
    delphiforphp的中文环境的搭建
    初步拟定的delphiforphp的学习计划
    取當前日期各种數据庫的寫法(转存,备查)
    php两页间传变量(转发,备查)
    关于delphiforphp我想说的。
  • 原文地址:https://www.cnblogs.com/xsjayz/p/3012645.html
Copyright © 2011-2022 走看看