これがすべてのコードではありません。すべてを正しく宣言したことを確認しましたが、「秒」が減少しているため、ラベルは変更されていません。
なぜ「subtractTime」のように、timerLabel.text を「すべき」秒数を使用したフォーマットの文字列に等しくし、アラートを使用してゲームをリセットするときにカウントダウンしているのかわかりません。 t が変化すると、カウントダウンしていることがわかります。そうしないと、「秒」が 0 に等しいからアラートがトリガーされません。
- (void)setupGame;
{
seconds = 30;
count = 0;
timerLabel.text = [NSString stringWithFormat: @"Time: %i", seconds];
scoreLabel.text = [NSString stringWithFormat: @"Score: %i", count];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(subtractTime)
userInfo:nil
repeats:YES];
}
- (void)subtractTime;
{
seconds--;
timerLabel.text = [NSString stringWithFormat:@"Time: %i", seconds];
if (seconds == 0)
{
[timer invalidate];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Time is up !"
message: [NSString stringWithFormat: @"You Scored %i points", count]
delegate:self
cancelButtonTitle: @"Play Again"
otherButtonTitles:nil];
[alert show];
}
}
@end