Создание таймера обратного отсчета
Я создаю таймер обратного отсчета в X-кодах с Obc C. Я новичок в этом, и мне нужна помощь с моим таймером, он будет отсчитывать с того времени, когда вы входите.
Прямо сейчас мой код выглядит так:
-(void) timerRun {
secoundCount = secoundCount - 1;
int minuts = secoundCount / 60;
int seconds = secoundCount - (minuts * 60);
NSString *timerOutput = [NSString stringWithFormat:@"%2d:%.2d", minuts, seconds];
countdownlable.text = timerOutput;
Этот обратный отсчет работает отлично, пока он отсчитывает от 99 минут или меньше. Я хотел бы иметь еще один int в течение нескольких часов, но когда я делаю это, что-то идет не так, и я получаю ошибку.
Не могли бы вы объяснить, как я добавил бы еще одно целое число для "часов" к этому счетчику
Я пробовал следующее, но это не работает:
-(void) timerRun {
secoundCount = secondCount - 1;
int hours = secondCount / 60;
int minuts = secondCount / 60;
int seconds = secondCount - (minuts * 60);
NSString *timerOutput = [NSString stringWithFormat:@"%1d:%2d:%.2d", hours, minuts, seconds];
countdownlable.text = timerOutput;
заранее спасибо
2 ответа
Для этого есть разные способы, например, с помощью оператора "modulo":
int tmp = secondCount;
int seconds = tmp % 60;
tmp /= 60;
int minutes = tmp % 60;
tmp /= 60;
int hours = tmp;
NSString *timerOutput = [NSString stringWithFormat:@"%d:%02d:%02d", hours, minutes, seconds];
Преимущество этого метода в том, что вы можете легко расширить его на большие промежутки времени, например:
int tmp = secondCount;
int seconds = tmp % 60;
tmp /= 60;
int minutes = tmp % 60;
tmp /= 60;
int hours = tmp % 24;
tmp /= 24;
int days = tmp;
Примечание: вместо уменьшения оставшегося времени на одну секунду в функции обратного вызова таймера, может быть более точным вычислить его следующим образом:
NSDate *now = [NSDate date];
secondCount = [destinationTime timeIntervalSinceDate:now];
Вы должны рассчитывать на минуты.
я думаю, что ваша ошибка - логическая ошибка
потому что час не равен второму счету / 60
int hours = minutsCount / 60;
и вы можете использовать NSTimer
вы найдете это здесь