我有一個顯示時間的UIButton,這次顯示在UIButton的titleLabel屬性中。要改變這個時間,你可以點擊按鈕,該按鈕調用這個方法來引入一個日期選擇器。調用同一個方法的兩個UIButtons有不同的結果
- (IBAction)slidePickerIn:(id)sender {
// Ok button to dismiss picker
[self.view bringSubviewToFront:self.datePickerOK];
// Bring picker to front
[self.view bringSubviewToFront:self.datePicker];
// animate entrance of picker and fade in of dismiss button
[UIView animateWithDuration:.5 animations:^{
[self.datePicker setFrame:pickerIn];
self.datePickerOK.alpha = 1;
}];
}
當你點擊dismiss按鈕時,這個方法被調用。它擺脫了日期選擇器和解僱按鈕,並更新了顯示時間的按鈕的標題。
- (IBAction)slideDatePickerOut {
[UIView animateWithDuration:.5 animations:^{
self.datePickerOK.alpha = 0;
[self.datePicker setFrame:pickerOut];
}];
// Set time correctly
NSDate *wake = self.datePicker.date;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"hh:mm a"];
self.wakeUpTime.titleLabel.text = [NSString stringWithFormat:@"%@", [df stringFromDate:wake]];
self.wakeUpTime.date = wake;
}
屏幕上還有另一個按鈕,它也會調用slidePickerIn並允許您更改時間。
問題:當我點擊這個按鈕來改變顯示的日期時,一切正常。但是,當我點擊包含顯示時間的標題的按鈕本身時,日期將顯示在日期選擇器的同時,顯示爲00:00 AM(默認值)。當日期選擇器被解僱時,時間正確更新。但正如我所說的,使用其他按鈕不會改變顯示選取器時的時間值。我真的不確定這是爲什麼。任何幫助將非常感激。
小細節 - 創建和格式化的日期格式需要近半秒。你應該讓它變成靜態的,只做一次。 – HalR
這是設置斷點的最佳時機。在 - [UILabel setText:]中添加一個符號斷點,然後在點擊出現問題的按鈕之前啓用它。有些東西正在發送錯誤值爲setText:的消息。當代碼在調試器中斷時,您將能夠跟蹤導致更改的代碼。 –
@HalR你的意思是我應該把格式化程序保存在一個屬性中,所以我不必每次都創建它。 – schlow