2015-01-31 4 views
-2

Таймер не останавливается, а не stopButtonPressed, а не если значение sec равно 0. Таймер должен, например, count от 100 до 0. Если значение == 0 или кнопка останова нажата, таймер должен остановиться! Но он продолжает считать.NSTimer [таймер недействителен] не работает

Где моя ошибка? Я пробовал разные способы, но ничего не работает.

Вот код:

в файле .h

@property (weak, nonatomic) NSTimer *countdownTimer; 

в .m файл

- (void)timer { 

    sec = sec - 1; 
    int minutes = sec/60; 
    int seconds = sec - (minutes * 60); 

    [_timerLabel setText:[NSString stringWithFormat:@"%02d:%02d",minutes,seconds]]; 

    if (sec == 0) { 
     [_countdownTimer invalidate]; 
     _countdownTimer = nil; 
    } 
} 

- (void)startTimer { 

    _countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timer) userInfo:nil repeats:YES]; 
} 

- (IBAction)startButtonPressed:(id)sender { 

    [self startTimer]; 
    [_startButton setHidden:YES]; 
    [_stopButton setHidden:NO]; 
} 

- (IBAction)stopButtonPressed:(id)sender { 

    [_stopButton setHidden:YES]; 
    [_countdownTimer invalidate]; 
    [_startButton setHidden:NO]; 
} 

Спасибо!

+1

Вы не описали никаких симптомов. –

+0

Таймер должен, например, счет от 100 до 0. Если значение == 0, таймер должен остановиться! Но он продолжает считать – NimzApps

ответ

-1

Я пробовал этот кусок кода, и он отлично работает, таймер останавливается, когда вы нажимаете stopButton и когда sec == 0;

#import "ViewController.h" 

@interface ViewController(){ 
    NSTimer*_countdownTimer; 
    int sec; 
} 

@property (nonatomic,weak) IBOutlet UILabel*_timerLabel; 
@property (nonatomic,weak) IBOutlet UIButton*_startButton; 
@property (nonatomic,weak) IBOutlet UIButton*_stopButton; 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    sec=100; 
} 

- (void)timer { 

    sec = sec - 1; 
    int minutes = sec/60; 
    int seconds = sec - (minutes * 60); 

    [self._timerLabel setText:[NSString stringWithFormat:@"%02d:%02d",minutes,seconds]]; 

    if (sec == 0) { 
     [_countdownTimer invalidate]; 
     _countdownTimer = nil; 
    } 
} 

- (void)startTimer { 
    _countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timer) userInfo:nil repeats:YES]; 
} 

- (IBAction)startButtonPressed:(id)sender { 
    [self startTimer]; 
    [self._startButton setHidden:YES]; 
    [self._stopButton setHidden:NO]; 
} 

- (IBAction)stopButtonPressed:(id)sender { 
    [self._stopButton setHidden:YES]; 
    [_countdownTimer invalidate]; 
    _countdownTimer=nil; 
    [self._startButton setHidden:NO]; 
} 
+0

не работает ... – NimzApps

+0

Это не обязательно, чтобы остановить таймер. –

+0

Возможно, ваш _stopButton не подключен к вашему IBAction, и поэтому он не останавливается. Я пробовал этот код, и он работал. @Fist –

Смежные вопросы