Во-первых, нет способа сохранить таймер включенным после закрытия приложения. Фоновые приложения просто не разрешены на iPhone. Существуют способы подделать его с помощью таймера (сохранить временную метку при выходе из приложения и сравнить ее со временем, когда оно запускается обратно), но он не справится со случаем, когда таймер истекает до того, как приложение запускается обратно. до.
Что касается обновления UILabel с помощью обратного отсчета, NSTimer, вероятно, будет работать. Примерно так, если в вашем классе есть таймер NSTimer, int secondsLeft и UILabel countdownLabel:
Создать таймер:
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
Метод updateCountdown:
-(void) updateCountdown {
int hours, minutes, seconds;
secondsLeft--;
hours = secondsLeft / 3600;
minutes = (secondsLeft % 3600) / 60;
seconds = (secondsLeft %3600) % 60;
countDownlabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
Я делаю нечто подобное в одном из своих приложений, но сейчас у меня нет кода.