iphone - 当用户返回上一个 View 时如何停止计时器

标签 iphone objective-c ios nstimer

我的计时器有问题。
在我的游戏 View 中 viewDidLoad我有:

sixtySecondTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(changeValue) userInfo:nil repeats:YES];

接下来我有changeValue方法:
- (void) changeValue {
    timerInt += 1;
    NSLog(@"TimerInt2 = %d", timerInt);
    NSString *string = [NSString stringWithFormat:@"%d", timerInt];
    labelTimer.text = string;
}

我使用以下方法转到上一个 View :
- (IBAction)backView:(id)sender {
    timerInt = 0;
    [self.navigationController popViewControllerAnimated:YES];
}

当我在命令行中的先前 View 中时,我可以看到:
2012-02-13 10:04:33.393 Colores[1240:707] TimerInt2 = 1
2012-02-13 10:04:34.393 Colores[1240:707] TimerInt2 = 2
2012-02-13 10:04:35.393 Colores[1240:707] TimerInt2 = 3

当我在命令行中进入游戏 View 时,我可以看到:
2012-02-13 10:04:36.393 Colores[1240:707] TimerInt2 = 4
2012-02-13 10:04:36.508 Colores[1240:707] TimerInt2 = 1
2012-02-13 10:04:37.393 Colores[1240:707] TimerInt2 = 5
2012-02-13 10:04:37.508 Colores[1240:707] TimerInt2 = 2
2012-02-13 10:04:38.393 Colores[1240:707] TimerInt2 = 6
2012-02-13 10:04:38.508 Colores[1240:707] TimerInt2 = 3

问题是我的计时器不会停止,当我再次进入游戏 View 时创建"new"变量 timerInt...当我再次进入前一个 View 并再次进入游戏 View 时,我有三个 timerInt 变量。

我该如何解决?

最佳答案

    - (IBAction)backView:(id)sender {
      if ([sixtySecondTimer isValid])
{ 
      [sixtySecondTimer invalidate];
        timerInt = 0;
        [self.navigationController popViewControllerAnimated:YES];
    }

发送 invalidate到计时器阻止它再次触发

关于iphone - 当用户返回上一个 View 时如何停止计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257997/

相关文章:

ios - 强制更改 UINavigationController 方向

iphone - NSKeyedUnarchiver - 删除解码数据?

iphone - CALayer 似乎没有定义

iphone - UIPinchGestureRecognizer 的标度值是如何确定的?

ios - UIImage 大于自定义 UITableViewCell

iphone - 比较字符串 Objective C

ios - UITableView Cell 无法正确保存数据?

jquery - 如何在 iPhone 上查看背景图片?

objective-c - 如何将图像从 "Images.xcassets"加载到 NSImage*?

objective-c - 在 Interface Builder 中为通用应用程序创建单个 .xib? (iOS)