定时器在想要时不停止,在不想要Obj-C时停止

时间:2015-06-24 00:18:38

标签: ios objective-c uiviewcontroller timer segue

故事板设置在2个VC上。 10 900 只有initial VCsegues发生位置的按钮。 battleScene有一个battleScene返回segues的按钮,一个显示健康状况的标签,以及一个启动计时器的按钮。

我有两个问题,我一直试图解决这个问题,并且没有想到。

1:当我播放initial VC然后切换VC并返回VC,其中定时器正在影响标签,标签停止更新。

2:当敌人2的生命值为0并且我告诉计时器停止使用我的NSTimer方法时,计时器继续。

stopTimer

我从计时器指南中获得了int enemy001Hp = 100; int enemy002Hp = 200; bool enemy001Active = NO; bool enemy002Active = NO; - (void) enemy1 { enemy001Active = YES; self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy001Hp]; } - (void) enemy2 { enemy002Active = YES; self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp]; } - (void) enemyDamageTimer { if (enemy001Active == YES) { enemy001Hp -= 50; self.enemyHpLabel.text = [NSString stringWithFormat:@"%i",enemy001Hp]; if (enemy001Hp <= 0) { [self enemy2]; self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp]; enemy001Active = NO; enemy002Active = YES; } } else if (enemy002Active == YES) { enemy002Hp -=50; self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp]; } } - (void) stopTimer { [timer invalidate]; timer = nil; } - (void)viewDidLoad { [super viewDidLoad]; [self enemy1]; if (enemy002Active == YES) { self.enemyHpLabel.text = [NSString stringWithFormat:@"%i", enemy002Hp]; } } - (IBAction)idleAttack:(id)sender { self.idleOutler.hidden = YES; timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(enemyDamageTimer) userInfo:nil repeats:YES]; if (enemy001Active == YES) { if (enemy001Hp <= 0) { [self enemy2]; enemy001Active = NO; enemy002Active = YES; } } else if (enemy002Active == YES) { if (enemy002Hp <= 0) { self.enemyHpLabel.text = [NSString stringWithFormat:@"0"]; enemy002Hp = 0; enemy002Active = NO; [self stopTimer]; } } } 方法,并且我一直在寻找如何解决在segue问题上停止的计时器而无法解决问题。

干杯

1 个答案:

答案 0 :(得分:0)

对于问题1,您的代码中没有关于计时器的错误,因此问题可能仍然存在于VC转换代码中

对于问题2,计时器将重复触发您从未调用enemyDamageTimer的方法stopTimer。这就是计时器继续的原因