【发布时间】:2013-05-22 10:28:51
【问题描述】:
目前我正在开发一个需要秒表说 1 分钟的游戏,当用户点击播放按钮进入游戏屏幕时,我希望运行秒表倒计时 1 分钟 01:00,00:59 ,00:58 等。出于这个原因,我搜索并发现 NSTimer 将是实现秒表的理想选择。因此我拿了一个标签,创建了一个 NSTimer 实例,分配了时间间隔并开始减少计时器标签中的值,即:
-(void)viewDidAppear:(BOOL)animated
{
self.stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(viewWillAppear:) userInfo:nil repeats:YES];
[super viewDidAppear:YES];
}
-(void)viewWillAppear:(BOOL)animated
{
static int currentTime = 60;
int newTime = currentTime--;
int minutesRemaining = newTime / 60; // integer division, truncates fractional part
int secondsRemaining = newTime % 60; // modulo division
self.timerLabel.text = [NSString stringWithFormat:@"%02d:%02d", minutesRemaining, secondsRemaining];
if ([self.timerLabel.text isEqualToString:@"00:00"])
{
[stopWatchTimer invalidate];
}
[super viewWillAppear:YES];
}
这里的问题是计时器开始运行 01:00,00:59,00:58 并继续运行,比如说在第 53 秒,我导航到另一个视图并返回,它从 00:53,00 开始运行: 52 等等,但我希望它从 01:00 开始运行,为此我在 viewDidDisappear 中实现了使 NSTimer 无效,即
-(void)viewDidDisappear:(BOOL)animated
{
if ([stopWatchTimer isValid])
{
[stopWatchTimer invalidate];
self.stopWatchTimer = nil;
}
[super viewDidDisappear:YES];
}
同样的问题仍然存在!
对该问题进行了大量研究,但没有发现有用且有效的答案。
有人可以指导我吗,感谢任何帮助。
提前谢谢大家:)
【问题讨论】: