iOS開發--UIDatePicker

來源:互聯網
上載者:User

標籤:

UIDatePicker 是一個控制器類,封裝了 UIPickerView,但是他是UIControl的子類,專門用於接受日期、時間和持續時間長度的輸入。日期選擇器的各列會按照指定的風格進行自動設定,這樣就讓開發人員不必關心如何配置錶盤這樣的底層操作。你也可以對其進行定製,令其使用任何範圍的日期。

UIDatePicker 依賴於 NSDate 類,這個類是cocoa 基礎的一員,以前用於案頭系統。本文中僅需用到 initWithString 來建立NSDate 所以NSDate 留待專題講解,你只需要掌握本文中使用的方法就好。

[java] view plaincopyprint?
  1. NSDate* _date = [ [ NSDate alloc] initWithString:@"2012-03-07 00:35:00 -0500"];  

一、建立日期/時間選取器

 

UIDatePicker 使用起來比標準 UIPickerView 更簡單。他會根據你指定的日期範圍建立自己的資料來源。使用它只需要建立一個對象:

[java] view plaincopyprint?
  1. UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0.0,0.0,0.0,0.0)];  

預設情況下選取會顯示目前的日期和時間,並提供幾個錶盤,分別顯示可以選擇的月份和日期、小時、分鐘、以及上午、下午。因此使用者預設可以選擇任何日期和時間的組合。

 

二、日期選擇器模式

日期/時間選取器支援4種不同模式的選擇方式。通過設定 datePickerMode 屬性,可以定義選擇模式:

[java] view plaincopyprint?
  1. datePicker.datePickerMode = UIDatePickerModeTime;  

 

支援的模式:

[java] view plaincopyprint?
  1. typedef enum {  
  2.     UIDatePickerModeTime,           // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)  
  3.     UIDatePickerModeDate,           // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)  
  4.     UIDatePickerModeDateAndTime,    // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)  
  5.     UIDatePickerModeCountDownTimer  // Displays hour and minute (e.g. 1 | 53)  
  6. } UIDatePickerMode;  

三、時間間隔

 

你可以將分鐘錶盤設定為以不同的時間間隔來顯示分鐘,前提是該間隔要能夠讓60整除。預設間隔是一分鐘。如果要使用不同的間隔,需要改變 minuteInterval屬性:

[java] view plaincopyprint?
  1. datePicker.minuteInterval = 5;  

四、日期範圍

 

你可以通過設定mininumDate 和 maxinumDate 屬性,來指定使用的日期範圍。如果使用者試圖滾動到超出這一範圍的日期,錶盤會復原到最近的有效日期。兩個方法都需要NSDate 對象作參數:

[java] view plaincopyprint?
  1. NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];  
  2.     NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];  
  3.       
  4.     datePicker.minimumDate = minDate;  
  5.     datePicker.maximumDate = maxDate;  

如果兩個日期範圍屬性中任何一個未被設定,則預設行為將會允許使用者選擇過去或未來的任意日期。這在某些情況下很有用處,比如,當選擇生日時,可以是過去的任意日期,但終止與當前日期。如果你希望設定預設顯示的日期,可以使用date屬性:

[java] view plaincopyprint?
  1. datePicker.date = minDate;  

此外,你還可以用 setDate 方法。如果選擇了使用動畫,則錶盤會滾動到你指定的日期:

[java] view plaincopyprint?
  1. [ datePicker setDate:maxDate animated:YES];  

五、顯示日期選取器

 

 

[java] view plaincopyprint?
  1. [ self.view addSubview:datePicker];  

需要注意的是,選取器的高度始終是216像素,要確定分配了足夠的空間來容納。

 

六、讀取日期

 

[java] view plaincopyprint?
  1. NSDate* _date = datePicker.date;  

由於日期選取器是 UIControl的子類 (與UIPickerView不同),你還可以在UIControl類的通知結構中掛接一個委託:

[java] view plaincopyprint?
  1. [ datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged ];  

只要使用者選擇了一個新日期,你的動作類就會被調用:

[java] view plaincopyprint?
  1. -(void)dateChanged:(id)sender{  
  2.           UIDatepicker* control = (UIDatePicker*)sender;  
  3. NSDate* _date = control.date;  
  4. /*添加你自己響應代碼*/  
  5. }  

iOS開發--UIDatePicker

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.