Создание таймера обратного отсчета

Я создаю таймер обратного отсчета в 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

вы найдете это здесь

Как создать таймер обратного отсчета в xcode 4.5

Другие вопросы по тегам