如何在closuresViewController后继续倒数计时器

我使用UIDatePicker来实现一个倒计时timer.After加载视图datePickerMode设置CountDownTimer:

 - (void)viewDidLoad { [super viewDidLoad]; self.countDownTimer.datePickerMode=UIDatePickerModeCountDownTimer; } 

首先,在UIDatePicker设置倒数时间,然后按下button开始倒计时:

 - (IBAction)StartCountdown:(id)sender { [sender setTitle:@"Cancel" forState:UIControlStateNormal]; countDownInterval = (NSTimeInterval)countDownTimer.countDownDuration; remainder = countDownInterval; afterRemainder = countDownInterval - remainder % 60 ; //call updateCountDown() timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateCountDown) userInfo:nil repeats:YES]; } 

调用updateCountDown()

 -(void)updateCountDown{ afterRemainder --; int hours = (int)(afterRemainder/(60*60)); int mins = (int)(((int)afterRemainder/60)-(hours * 60)); int secs = (int)(((int)afterRemainder - (60 * mins) - (60 * hours *60))); NSString *displayText = [[NSString alloc]initWithFormat:@"%02u : %02u : %02u",hours,mins,secs]; self.displayLabel.text = displayText; } 

Action可以正常执行,但是当我跳出这个视图并且不会执行定时器为零的时候,我怎么操作这个定时器可以在跳转后持续观看?

我认为你可以这样做:

  1. 当你跳出视图时,让这个状态保存到NSUserDefaults
    • 剩下的时间,也许在几秒钟内
    • 目前系统时间,考试时间:13:20:15
  2. 当你再次打开视图时:
    • 获取当前的系统时间,用保存的系统时间(A)
    • (A)保存的剩余时间(以秒为单位)并继续倒计时。

只是一个想法,但希望它有帮助

  1. 最好和干净的方式来创build一个单例类,并在里面声明你的计时器作为一个属性。 所以在整个应用程序中只有一个计时器对象的实例。

  2. 另一种方法是在应用程序委托类中声明计时器,该类也在整个应用程序中保存对象