2012-09-10 29 views
1

您將如何執行「dayDidChange」方法?如何實現「dayDidChange」方法,同時避免使用NSTimer?

我有一個dateLabel,需要更新,當一天更改

我已經有2個解決方案實施。但放棄了他們。

1st,on viewWillAppear,我會設置我的標籤。用戶查看VC時日期變化的機會非常小......並且它不會真正引入任何「錯誤」來執行但仍然不完美。

第二,我還實施了一個間隔1秒的NSTimer。很棒。但是,如果有機會我不需要這樣做,我就不會有被調用方法的想法。

還有其他的選擇嗎?當日子發生變化時,我需要更新該標籤。另外,是否有可能使用NSNotificationCenter?

+0

http://stackoverflow.com/questions/2938807/can-i-get-a-notification-when-a-new-day-begins – janusbalatbat

+0

雖然這的確解決了我的問題,我期待,以避免的NSTimer。謝謝 – nmdias

回答

2

您可以計算當天剩餘的時間併爲其設置計時器。您還可以收聽UIApplicationSignificantTimeChangeNotification。請注意,此通知不僅會在日期發生變化時觸發,而且會在時區調整和其他更改時觸發。請記住,只有當您的應用未處於非活動狀態時,纔會觸發通知的觸發。

+0

謝謝先生!這正是我需要的。 – nmdias

6

在你appliciation委託,執行下面的方法: - (void)applicationSignificantTimeChange:(UIApplication *)application

這種方法被稱爲當一天的變化,或者如果設備的時間在後臺無論出於何種原因被改變(如改變時區)。

希望它有幫助。快樂編碼:)

+0

可愛!這以非常優雅的方式解決了我的問題。先生非常感謝您 – nmdias

1

有很多方法可以這樣做,如果需要,我可以詳細闡述它們。 但這裏是一個很好的快招

使用此代碼在您的應用程序委託 它會聽時間的變化(當日期或時間急劇變化),這時 - 運行測試,如果需要更新的標籤。

閱讀我這個位置:https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html

這只是做它沒有計時器的快速簡單的方法。

- (void)applicationSignificantTimeChange:(UIApplication *)application { 
    NSLog(@"Time has changed, do a test and update the label if needed"); 
    // [yourViewController runTimeTestAndUpdateFunction]; 
} 
相關問題