目前我正在開發一個遊戲,需要停止觀看說1分鐘,當用戶點擊播放按鈕時,它進入遊戲屏幕,我想跑秒錶倒計時1分鐘01:00,00:59,00:58等。出於這個原因,我搜索並發現NSTimer將是實現秒錶的理想選擇。因此,我拿了一個標籤,創建了一個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開始運行在我實現無效的NSTimer在viewDidDisappear,即
-(void)viewDidDisappear:(BOOL)animated
{
if ([stopWatchTimer isValid])
{
[stopWatchTimer invalidate];
self.stopWatchTimer = nil;
}
[super viewDidDisappear:YES];
}
仍存在相同的問題!
在這個問題上做了大量的研究,發現沒有有用的答案和工作。
有人可以指導我,任何幫助表示讚賞。
感謝每一個提前:)
完美馬塞爾之前調用超第一本的方法,它的工作,但唯一的問題是標籤顯示的是以前的時間說00:51,然後更改爲01:00和計時器工作正常,但我不希望以前的時間是可見的,當我回到視圖。謝謝:) –
我已更新示例代碼。確保在視圖出現時立即在標籤上設置文本。 – Marcel
它工作的馬塞爾,但有一個輕微的修改您的答案,這將使其工作沒有任何問題,我打算編輯你的答案,我可以嗎? –