0

我正在开发设置 UILocalNotification 的应用程序。这是我第一次使用它,我想有一些解释,以便以最好的方式有效地使用它。倒计时通知到期时间的最糟糕的方法是什么?我想向用户显示一个缺少时间的 UILabel,这个 UILabel 每秒更新一次,当我重新打开我的应用程序时,它必须显示计时器。我已经这样做了:当我重新打开我的应用程序或调用必须显示计时器的视图时,我检查是否有 UILocalNotification 与我之前设置的 userInfo 然后我减去它的 NSDate 当前时间所以我明白了,并更新了 UILabel。我知道它以秒为单位显示时间,但如果这个程序很好,我会将其转换为时间。

有没有最好的方法来做到这一点?

这是我的代码:

UILocalNotification *countDownNotificationSetted;

NSArray *scheduledNotificationArray = [[UIApplication sharedApplication] scheduledLocalNotifications];

for (int i = 0; i<[scheduledNotificationArray count]; i++)

    if ([[[[scheduledNotificationArray objectAtIndex:i] userInfo] objectForKey:@"ID"] isEqualToString:@"ParkNotification"]) {

        countDownNotificationSetted = [scheduledNotificationArray objectAtIndex:i];
        break;
    }

NSDate *expringDate = [countDownNotificationSetted fireDate];

NSTimeInterval timeLeftToNotification = [expringDate timeIntervalSinceNow];

if(timeLeftToNotification == 0){

    [countDownTimer invalidate];
}

datePicker.countDownDuration = timeLeftToNotification;

_countDownLabel.text = [NSString stringWithFormat:@"%.0f", timeLeftToNotification];

NSLog(@"%.0f", timeLeftToNotification);
4

1 回答 1

0

我认为如果您像已经这样做的那样使用计时器更新标签会更好,当您关闭应用程序时,将该时间存储在本地文件或用户默认值中,并且当应用程序再次启动时从该文件中读取时间。或者,如果您想要从第一次打开应用程序以来经过的时间,只需将时间写入appDidFinishLaunching并每次都从那里获取。我在这里看不到本地通知的好处。

希望这可以帮助。干杯!

于 2012-07-08T10:01:33.883 回答