1

我的应用程序使用默认系统存储上次数据更新的日期和时间。

我的窗口有一个绑定到该值的文本框。此文本框还附加了一个日期格式化程序。全部通过界面生成器完成。日期格式设置为使用相对日期。

数据仅在白天更新,每次有新数据到达时,文本字段都会完美更新。所以我得到类似的东西:

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

17:40 将是当天的最后一次数据更新。

问题是,一旦到了午夜,它仍然会显示 Today, 17:40,而应该显示 Yesterday, 17:40。

如果我退出并重新打开应用程序,它会显示昨天,17:40。

我想我需要告诉一些东西来刷新,但我不确定是什么,我找不到一个例子。

1) 显然你可以发送假的 willChangeValueForKey 和 didChangeValueForKey 通知,但很多人说这是不正确的。

2)我尝试在午夜后将用户默认值设置为自身,但这并没有触发更改。

3)我尝试将用户默认值设置为 nil 然后在午夜后返回,但这也不起作用。

我确信有一种正确而简单的方法可以做到这一点,但我找不到它。

我需要触发什么?我需要触发哪个对象?

非常感谢。

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 回答