NSTimer - Секундомер - PullRequest
       2

NSTimer - Секундомер

0 голосов
/ 05 июля 2010

Я пытаюсь создать секундомер в формате ЧЧ: ММ: СС, код выглядит следующим образом:

-(IBAction)startTimerButton;
{
    myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];
}


-(IBAction)stopTimerButton;
{
    [myTimer invalidate];
    myTimer = nil;
}


-(void)showActivity;
{
    int currentTime = [time.text intValue];
    int newTime = currentTime + 1;
    time.text = [NSString stringWithFormat:@"%.2i:%.2i:%.2i", newTime];
}

Хотя выходной сигнал увеличивается на 1 секунду, как и ожидалось, формат выходного сигнала XX:YY: ZZZZZZZZ, где XX секунды.

У кого-нибудь есть мысли ??

1 Ответ

6 голосов
/ 05 июля 2010

Ваш stringWithFormat запрашивает 3 целых числа, но вы передаете только одно;)

Вот код, который я использовал раньше, чтобы сделать то, что, как я думаю, вы пытаетесь сделать:

- (void)populateLabel:(UILabel *)label withTimeInterval:(NSTimeInterval)timeInterval {
    uint seconds = fabs(timeInterval);
    uint minutes = seconds / 60;
    uint hours = minutes / 60;

    seconds -= minutes * 60;
    minutes -= hours * 60;

    [label setText:[NSString stringWithFormat:@"%@%02uh:%02um:%02us", (timeInterval<0?@"-":@""), hours, minutes, seconds]];
}

чтобы использовать его с таймером, сделайте это:

    ...
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
    ...

- (void)updateTimer:(NSTimer *)timer {
    currentTime += 1;
    [self populateLabel:myLabel withTimeInterval:time;
}

где currentTime - это NSTimeInterval, который вы хотите считать по одному каждую секунду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...