ラベルに5から1までのカウントダウンタイマーを表示しています。カウントダウンタイマーが表示されているときに、特定のラベルのバックグラウンドでオーディオを再生しようとしています。つまり、5が表示されている場合は、5のオーディオサウンドを再生する必要があり、4が1秒後に表示されている場合は4のオーディオサウンドを再生する必要があります。コードを実行しましたが、問題は5、4、3、2、1のすべてのオーディオサウンドが同時に再生されることです。これが私のコードです。
-(void)viewWillAppear:(BOOL)animated
{
countDown = 7;
exitcountdown = 0;
lblCountdown.hidden = YES;
btnCancel.hidden = YES;
lblCancel.hidden = YES;
countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime:) userInfo:nil repeats:YES];
[countDownTimer fire];
}
-(void)updateTime:(NSTimer*)timerParam
{
countDown--;
if (countDown==5)
{
lblCountdown.hidden = NO;
lblCountdown.text = [NSString stringWithFormat:@"%d",countDown];
NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",countDown] ofType:@"mp3"];
if ([player isPlaying])
{
[player stop];
}
player= [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
player.delegate = self;
[player stop];
[player setCurrentTime:0.0];
[player setVolume:100.0];
[player play];
lblCancel.hidden = NO;
btnCancel.hidden = NO;
lblWarning.hidden = YES;
lblGps.hidden = YES;
[countDownTimer fire];
}
else if (countDown==0)
{
[self sendRequest];
countDownTimerexit = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(exitBackground:) userInfo:nil repeats:YES];
[countDownTimerexit fire];
NSString *phoneLinkString = [NSString stringWithFormat:@"tel://%@", self.emergencyphonenumber];
NSURL *phoneLinkURL = [NSURL URLWithString:phoneLinkString];
[[UIApplication sharedApplication] openURL:phoneLinkURL];
[self clearCountDownTimer];
btnCancel.hidden = YES;
lblCancel.hidden = YES;
}
lblCountdown.text = [NSString stringWithFormat:@"%d",countDown];
}
lblCountdownは、countDownが5,4,3,2,1として出力されるラベルです。countDownはint変数ですcountDownTimerはNSTimer変数です