iOS開發-UI控制元件:UIDatePicker日期/時間選取器(滾輪)
文章轉自: http://justcoding.iteye.com/blog/1473352
UIDatePicker 是一個控制器類,封裝了 UIPickerView,但是他是UIControl的子類,專門用於接受日期、時間和持續時長的輸入。日期選取器的各列會按照指定的風格進行自動配置,這樣就讓開發者不必關心如何配置錶盤這樣的底層操作。你也可以對其進行定製,令其使用任何範圍的日期。
UIDatePicker 依賴於 NSDate 類,這個類是cocoa 基礎的一員,以前用於桌面系統。本文中僅需用到 initWithString 來建立NSDate 所以NSDate 留待專題講解,你只需要掌握本文中使用的方法就好。
- NSDate* _date = [ [ NSDate alloc] initWithString:@"2012-03-07 00:35:00 -0500"];
一、建立日期/時間選取器
UIDatePicker 使用起來比標準 UIPickerView 更簡單。他會根據你指定的日期範圍建立自己的資料來源。使用它只需要建立一個物件:
C程式碼- UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0.0,0.0,0.0,0.0)];
預設情況下選取會顯示目前的日期和時間,並提供幾個錶盤,分別顯示可以選擇的月份和日期、小時、分鐘、以及上午、下午。因此使用者預設可以選擇任何日期和時間的組合。
二、日期選取器模式
日期/時間選取器支援4種不同模式的選擇方式。通過設定 datePickerMode 屬性,可以定義選擇模式:
C程式碼- datePicker.datePickerMode = UIDatePickerModeTime;
支援的模式:
C程式碼- typedef enum {
-
UIDatePickerModeTime, // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)
- UIDatePickerModeDate, // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)
- UIDatePickerModeDateAndTime, // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)
- UIDatePickerModeCountDownTimer // Displays hour and minute (e.g. 1 | 53)
- } UIDatePickerMode;
三、時間間隔
你可以將分鐘錶盤設定為以不同的時間間隔來顯示分鐘,前提是該間隔要能夠讓60整除。預設間隔是一分鐘。如果要使用不同的間隔,需要改變 minuteInterval屬性:
C程式碼- datePicker.minuteInterval = 5;
四、日期範圍
你可以通過設定mininumDate 和 maxinumDate 屬性,來指定使用的日期範圍。如果使用者試圖滾動到超出這一範圍的日期,錶盤會回滾到最近的有效日期。兩個方法都需要NSDate 物件作引數:
C程式碼- NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];
- NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];
- datePicker.minimumDate = minDate;
- datePicker.maximumDate = maxDate;
如果兩個日期範圍屬性中任何一個未被設定,則預設行為將會允許使用者選擇過去或未來的任意日期。這在某些情況下很有用處,比如,當選擇生日時,可以是過去的任意日期,但終止與當前日期。如果你希望設定預設顯示的日期,可以使用date屬性:
C程式碼- datePicker.date = minDate;
此外,你還可以用 setDate 方法。如果選擇了使用動畫,則錶盤會滾動到你指定的日期:
C程式碼- [datePicker setDate:maxDate animated:YES];
五、顯示日期選擇器
C程式碼- [self.view addSubview:datePicker];
需要注意的是,選取器的高度始終是216畫素,要確定分配了足夠的空間來容納。
六、讀取日期
C程式碼- NSDate* _date = datePicker.date;
由於日期選擇器是 UIControl的子類 (與UIPickerView不同),你還可以在UIControl類的通知結構中掛接一個委託:
C程式碼- [datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged ];
只要使用者選擇了一個新日期,你的動作類就會被呼叫:
C程式碼- -(void)dateChanged:(id)sender{
- UIDatepicker* control = (UIDatePicker*)sender;
- NSDate* _date = control.date;
- /*新增你自己響應程式碼*/
- }
是不是覺得很好玩呢?確實。如果覺得好玩,你也試著封裝一個UIPickerView 試試看,打造一個你自己的專用滾輪。