1

您将如何实施“ dayDidChange ”方法?

我有一个dateLabel,当日期改变时需要更新。

我已经实施了 2 个解决方案。但放弃了他们。

第一,在 viewWillAppear 上,我会设置我的标签。当用户查看 VC 时更改日期的机会非常小……而且它不会真正引入任何“错误”来执行但是,它仍然不是完美的。

第二,我还实现了一个间隔为 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 回答