我想将此按钮延迟23小时,即82800秒。它应该工作正常,按钮确实在一次单击后延迟,但是当我切换到另一个视图控制器,或重新进入应用程序时,按钮延迟功能无法工作,因为它切换到另一个视图控制器后弹出回单击按钮或重新启动申请。
这是代码:
- (IBAction)save:(id)sender
{
UIButton *theButton = (UIButton *) sender;
theButton.enabled = NO;
[self performSelector:@selector(enableButton:) withObject:theButton afterDelay:82800.0];
}
- (void)enableButton:(UIButton *)button
{
button.enabled = YES;
}
我正在寻找允许此按钮延迟23小时的代码,无论我是退出应用程序还是切换到另一个视图控制器。
请帮助
答案 0 :(得分:1)
您应该使用NSUserDefaults
。调用save:
方法时,请检查当前日期[NSDate date]
并将其保存为用户默认值。然后(当时间已经过去),您从默认值中检索保存的日期并将其与当前日期进行比较。如果已经过了23个小时,则启用按钮
更新:
这是你如何保存日期:
- (IBAction)save:(id)sender
{
UIButton *theButton = (UIButton *) sender;
theButton.enabled = NO;
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"savedDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
然后(将来)你获取保存的日期:
NSDate* savedDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedDate"];
if ([[NSDate date] timeIntervalSinceDate:savedDate] >= 82800.0 )
{
theButton.enabled = YES;// you need to keep the reference to the button
}