Таймер обратного отсчета не сработает - PullRequest
0 голосов
/ 04 апреля 2011

Мой таймер обратного отсчета не работает.Это началось с «99» на экране, и это просто остановится на этом.Он вообще не перемещается.

В моем заголовочном файле.

@interface FirstTabController : UIViewController {
    NSTimer *myTimer; 
}

@property (nonatomic, retain) NSTimer *myTimer;

В моем .m файле

- (void)observeValueForKeyPath:(NSString *)keyPath
                  ofObject:(id)object
                    change:(NSDictionary *)change
                   context:(void *)context {
    myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
}

- (void)countDown {
    int counterInt = 100;

    int newTime = counterInt - 1;
    lblCountdown.text = [NSString stringWithFormat:@"%d", newTime];
}

И я отменяю 'myTimer' в моемdealloc.Итак, кто-нибудь может сказать мне, что не так с моим кодом.

1 Ответ

2 голосов
/ 04 апреля 2011

каждый раз, когда вызывается ваш метод таймера, вы устанавливаете counterInt (назад) на 100.

вы можете сделать эту статическую переменную

заменой int counterInt = 100; на static int counterInt = 100;

и, конечно, вы должны сохранить уменьшенное значение в counterInt.

- (void)countDown {
    static int counterInt = 100;
    counterInt = counterInt - 1;
    lblCountdown.text = [NSString stringWithFormat:@"%d", counterInt];
}

если вам нужна переменная вне этого метода, вы должны сделать counterInt переменной экземпляра вашего класса.

@interface FirstTabController : UIViewController {
    int counterInt;
}

и т. Д.

...