Как создать Обратный отсчет с 10-й секунды? - PullRequest
2 голосов
/ 08 апреля 2011

HI Я уже создал обратный отсчет в секунду, скажем, 10 секунд, но я хочу уточнить его от

до 10,0 и отобразить его на этикетке, как это сделать?Заранее спасибо

Вот что у меня сейчас для "второго" обратного отсчета

мой NSTimer

counterSecond = 10
NSTimer timer1 = [NSTimer scheduledTimerWithTimeInterval : 1
    Target:self selector:@selector (countLabel) userInfo:nil repeats:YES];



-(void)countLabel:
counterSecond --;

self.timerLabel.text = [NSString stringWithFormat @"%d", counterSecond];

Ответы [ 2 ]

15 голосов
/ 09 апреля 2011

Я бы использовал дату / время начала, чтобы отслеживать обратный отсчет.Потому что iOS может отложить запуск таймера для других задач.

- (void)countdownUpdateMethod:(NSTimer*)theTimer {
    // code is written so one can see everything that is happening
    // I am sure, some people would combine a few of the lines together
    NSDate *currentDate = [NSDate date];
    NSTimeInterval elaspedTime = [currentDate timeIntervalSinceDate:startTime];

    NSTimeInterval difference = countdownSeconds - elaspedTime;
    if (difference <= 0) {
        [theTimer invalidate];  // kill the timer
        [startTime release];    // release the start time we don't need it anymore
        difference = 0;         // set to zero just in case iOS fired the timer late
        // play a sound asynchronously if you like
    }

    // update the label with the remainding seconds
    countdownLabel.text = [NSString stringWithFormat:@"Seconds: %.1f", difference];
}

- (IBAction)startCountdown {
    countdownSeconds = 10;  // Set this to whatever you want
    startTime = [[NSDate date] retain];

    // update the label
    countdownLabel.text = [NSString stringWithFormat:@"Seconds: %.1f", countdownSeconds];

    // create the timer, hold a reference to the timer if we want to cancel ahead of countdown
    // in this example, I don't need it
    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector     (countdownUpdateMethod:) userInfo:nil repeats:YES];

    // couple of points:
    // 1. we have to invalidate the timer if we the view unloads before the end
    // 2. also release the NSDate if don't reach the end
}
0 голосов
/ 08 апреля 2011
counterSecond = 10
NSTimer timer1 = [NSTimer scheduledTimerWithTimeInterval : 0.1
    Target:self selector:@selector (countLabel) userInfo:nil repeats:YES];



-(void)countLabel:
counterSecond - 0.1;

self.timerLabel.text = [NSString stringWithFormat @"%f", counterSecond];

Это должно сработать.

...