我希望每天更改一次文字,即使我的应用未在您的应用关闭时NSTimer
未运行时打开,applicationSignificantTimeChange
如果我的应用无法收到消息关闭。
我需要做的是。
(1)获取当前日期 (2)根据当前日期选择一个短语 (3)更新您的标签
我仍然可以使用NSTimer
或applicationSignificantTimeChange
来处理我的应用 在午夜开放的情况,但我需要先让词组选择方法正常工作我的计时器或时间更改方法可以在午夜为新日期调用
任何人都可以帮助我解决这个问题以及我需要做些什么来使其发挥作用?
答案 0 :(得分:4)
我希望这段代码足以阻止您经常提出的所有类似问题 是的,未来的教训:在我感兴趣的类别中提出很多问题并且我将提供代码。
- (void)updateLabelForDate:(NSDate *)date {
NSTimeInterval timeInterval = [date timeIntervalSinceReferenceDate];
NSInteger days = timeInterval / (60*60*24);
NSArray *sloganArray = [NSArray arrayWithObjects:
NSLocalizedString(@"Slogan for day 1", nil),
NSLocalizedString(@"Slogan for day 2", nil),
NSLocalizedString(@"Slogan for day 3", nil),
NSLocalizedString(@"I'll hope you'll get it", nil),
nil];
NSInteger usedSloganIndex = (int)days % [sloganArray count];
NSString *slogan = [sloganArray objectAtIndex:usedSloganIndex];
NSLog(@"Slogan: %@", slogan);
}
- (void)applicationSignificantTimeChange:(UIApplication *)application {
[self updateLabelForDate:[NSDate date]];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];
[self updateLabelForDate:[NSDate date]];
// the following is there to prove that this code works.
NSDate *date = [NSDate date];
for (int i = 0; i < 10; i++) {
NSLog(@"Date: %@", date);
[self updateLabelForDate:date];
date = [date dateByAddingTimeInterval:(60*60*24)];
}
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[self updateLabelForDate:[NSDate date]];
}
答案 1 :(得分:0)
如果应用程序没有运行,则不能。
然而,您可以使用“本地通知” - 这有点像“推送通知” - 除了它是由您自己的设备发送 - 告诉您该应用需要注意。这可以安排。