2011-07-18 80 views
0

我在我的iPhone應用程序中使用UIDatePicker。我保留了一個按鈕,點擊哪個日期選擇器的模式在UIDatePickerModeTime和UIDatePickerModeDate之間切換。 當我更改日期選擇器的日期,當模式爲UIDatePickerModeDate時,更改日期正確顯示,當我切換模式,但如果我更改時間並切換模式,再次將模式切換到UIDatePickerModeTime將時間重置爲12:00 AM 。我不明白爲什麼會發生這種情況,應該怎麼做,請幫忙。將UIDatePicker的模式更改爲UIDatePickerModeTime時,UIDatePicker Time會重置?

回答

0

我用我聲明爲在其中存儲我當我提出日期選擇器從日期選擇器的日期的屬性Date對象。 當我更改日期選擇器中的日期(使用UIControl通知)時,我更新了存儲的日期 在更改日期選擇器的模式時,我將同一日期分配給日期選擇器。

我明白這是相當簡單的,但以前我被採取哪些沒有work.Making一個屬性做的工作對我來說

1

我有一個類似的問題,一個簡單的Date對象想同樣的事情。第一次從UIDatePickerModeDate更改爲UIDatePickerModeTime時,時間確定。但是,當我再次回到..Date模式,然後再次轉換到..Time模式時,讀取時間爲00:00。此後,無論模式改變的次數如何,時間總是保持在00:00。我將UIDatePicker編程爲與Apple UICatalog應用程序中的UIDatePicker相同。這種行爲在他們的應用程序中不存在。

以你的領導,我通過檢索和重新在一個UIControl通知拾取器的意圖所保持的@property保存從選取器的NSDate值。但是,當拾取器從日期模式更改爲時間模式時,我無法找到觸發的事件。我甚至想是這樣:

 [myDatePicker addTarget:self action:@selector(getDateTime:) forControlEvents:UIControlEventAllEvents]; 

當然的觸發的事件,如果我改變了選擇器的日期(或時間),但正如我所說,不是我改變了模式。

我最終結束了使用上述靶向其中I切換模式相同的事件方法一個UISegmentedControl(相同於UICatalog應用程序)。但是,當我將拾取器重置爲已保存的NSDate值時,時間保持在00:00。然後我使用NSLog來驗證保存的值是否正確,並發現其Time值部分也已更改爲00:00!這確實很奇怪,因爲我沒有保存一個新的NSDate值。原來保存的值只是自己改變了!

我仍然在調查這一問題,我非常接近調用它的錯誤,特別是當在的UIDatePicker編程方式添加,而不需要支持NIB。

更新: 我最終的解決辦法是幾乎等同於你的。出於某種原因,當保存日期作爲NSDate值存儲時,錯誤仍然存​​在。把它作爲一個NSString和類型轉換左右逢源的伎倆:

self.saveDate = (NSString*)self.myDatePicker.date; 

... 

[self.myDatePicker setDate:(NSDate*)self.saveDate animated:NO]; 

而且,因爲我檢索和通過GCD dispatch_async塊,物業,自我保存日期到外部設備。還需要標記(甚至在main_que上)。

最後得出結論:

我現在確信,設定每個機械手被訪問時的UIDatePicker日期是一個必要條件,而不是一個錯誤。使用Apple的UICatalog應用程序,當您將日期設置爲今天一次,然後在日期和時間模式之間切換時,它們的應用程序會表現出完全相同的行爲。日期保留,但時間重置爲00:00。如果切換到日期或時間以外的模式並切換回來,所有模式將被重置爲其樓層值。