1

私のアプリケーションは、デフォルト システムを使用して、最後のデータ更新の日付と時刻を保存します。

私のウィンドウには、値にバインドされたテキスト ボックスがあります。このテキスト ボックスには、日付フォーマッタも添付されています。すべてInterface Builderを介して行われます。日付形式は相対日付を使用するように設定されています。

データは日中のみ更新され、新しいデータが到着するたびにテキスト フィールドが完全に更新されます。だから私は次のようなものを得る:

今日 09:30 今日 09:35 今日 09:40 … 今日 17:40

17:40がその日の最終データ更新となります。

問題は、午前 0 時になると、昨日 17:40 と表示されるはずなのに、今日 17:40 と表示されることです。

アプリケーションを終了して再度開くと、昨日の 17:40 と表示されます。

リフレッシュするために何かを伝える必要があると思いますが、何がわからず、例が見つかりません。

1) 偽の willChangeValueForKey および didChangeValueForKey 通知を送信できるようですが、多くの人がこれは正しくないと言います。

2) 真夜中過ぎにユーザーのデフォルト値を自分自身に設定しようとしましたが、これは変更をトリガーしませんでした。

3)ユーザーのデフォルト値をゼロに設定してから、真夜中過ぎに戻そうとしましたが、これもうまくいきませんでした。

これを行うための正しくて簡単な方法があると確信していますが、見つけることができません。

何をトリガーする必要がありますか? どのオブジェクトでトリガーする必要がありますか?

どうもありがとう。

4

2 に答える 2

1

1) 偽の willChangeValueForKey および didChangeValueForKey 通知を送信できるようですが、多くの人がこれは正しくないと言います。

このように使用できると言えます。このように悪いことは何もありません。

于 2013-02-22T16:21:57.770 に答える
0

タイマーを使用してその表示を更新する必要があります...次のようにします:

(おそらくあなたのviewDidLoadで)

[NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(refreshDisplay) userInfo:nil repeats:YES];

...次に、時間フィールドを更新する新しいメソッドを作成するだけです

- (void)refreshDisplay {
    // do something to refresh your text label based on relative date
}
于 2013-02-22T16:23:23.843 に答える