1

「 dayDidChange 」メソッドをどのように実装しますか?

日が変わったときに更新が必要なdateLabel があります

私はすでに2つのソリューションを実装していました。しかし、それらをあきらめました。

まず、viewWillAppear でラベルを設定します。ユーザーが VC を表示しているときに日付が変更される可能性は非常に低く、実際には実行に「エラー」が発生することはありません。しかし、それでも完全ではありません。

第 2 に、1 秒間隔の NSTimer も実装しました。よく働く。しかし、メソッドを実行する必要がない可能性がある場合にメソッドを呼び出すという考えはあまりありません。

他のオプションはありますか?日が変わったら、そのラベルを更新する必要があります。また、これで NSNotificationCenter を使用することは可能ですか?

4

3 に答える 3

6

アプリケーション デリゲートで、次のメソッドを実装します。(void)applicationSignificantTimeChange:(UIApplication *)application

このメソッドは、日が変わったとき、または何らかの理由 (タイム ゾーンの変更など) でデバイスの時間がバックグラウンドで変更された場合に呼び出されます。

それが役に立てば幸い。幸せなコーディング:)

于 2012-09-10T12:37:30.907 に答える
2

その日の残り時間を計算し、タイマーを設定できます。UIApplicationSignificantTimeChangeNotification をリッスンすることもできます。この通知は、日付が変更されたときだけでなく、タイムゾーンの調整やその他の変更に対しても発生することに注意してください。アプリが非アクティブな状態でない場合にのみ、通知がトリガーされることにも注意してください。

于 2012-09-10T12:33:38.680 に答える
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];
}
于 2012-09-10T12:45:55.240 に答える