2013-07-27 53 views
0

我有一個顯示時間的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(默認值)。當日期選擇器被解僱時,時間正確更新。但正如我所說的,使用其他按鈕不會改變顯示選取器時的時間值。我真的不確定這是爲什麼。任何幫助將非常感激。

+0

小細節 - 創建和格式化的日期格式需要近半秒。你應該讓它變成靜態的,只做一次。 – HalR

+1

這是設置斷點的最佳時機。在 - [UILabel setText:]中添加一個符號斷點,然後在點擊出現問題的按鈕之前啓用它。有些東西正在發送錯誤值爲setText:的消息。當代碼在調試器中斷時,您將能夠跟蹤導致更改的代碼。 –

+0

@HalR你的意思是我應該把格式化程序保存在一個屬性中,所以我不必每次都創建它。 – schlow

回答

0

在你slidePickerIn補充:

if(self.datePicker.alpha == 0) 
{ 
    //Add all the methods 
} 

在你slidePickerOut補充:

if(self.datePicker.alpha == 1) 
{ 
    //Add all the methods 
} 

現在UIButtons將在正確的時間被調用。

0

確保您還沒有分配這兩種方法按鈕

相關問題