Я пытаюсь segue
перейти к следующему просмотру в конце короткого музыкального клипа.Никаких ошибок нет, но когда я его запускаю, сообщение NSLog
никогда не появляется, а переход никогда не происходит.Почему delegate
не знает, когда заканчивается звук?
Это файл .h:
@interface RecordingViewController : UIViewController
<AVAudioPlayerDelegate> {
AVAudioPlayer *player;
NSArray *recordingsArray;
int randomizedArtist;
}
Вот код из viewDidLoad
:
// set self as AVAudioPlayerDelegate
[player setDelegate:self];
// prep Audio Player
@try {
NSError *myError;
path = [[NSBundle mainBundle] pathForResource:recordingsArray[randomizedArtist] ofType:@"mp3"];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&myError];
if (!player) {
NSLog(@"viewDidLoad:error %@", [myError localizedDescription]);
NSLog(@"viewDidLoad:failure reason %@", [myError localizedFailureReason]);
NSLog(@"viewDidLoad:recovery option %@", [myError localizedRecoveryOptions]);
NSLog(@"viewDidLoad:recovery suggestions %@", [myError localizedRecoverySuggestion]);
}
}
@catch (NSException *exception){
NSLog(@"Exception %@ occurred", exception.name);
NSLog(@"Exception reason %@", exception.reason);
NSLog(@"Exception userInfo %@", exception.userInfo);
// make pop up alert
}
@finally{
NSLog(@"Finally on reading URL file called");
}
[player prepareToPlay];
Вот где я призываю игрока начать игру:
- (IBAction)playButton:(id)sender {
[player play];
}
А вот где я вызываю игру:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
NSLog(@"Player did finish playing");
[self performSegueWithIdentifier:@"quizVCSegue" sender:self];
}