2

我使用 AVAudioPlayer 在我的应用程序上播放声音。我可以通过调用其中的方法来停止声音[audioPlayer stop];。但是当我从另一个 ViewController 调用该方法时,声音并没有停止。我已经搜索过,但我无法得到正确的答案。我想要的是停止来自另一个 ViewController 的声音。有人能帮我吗?我是 iOS 新手。

我用它来添加我的声音文件:

//Declare the audio file location and settup the player
NSURL *audioFileLocationURL = [[NSBundle mainBundle] URLForResource:@"alarm" withExtension:@"wav"];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileLocationURL error:&error];
[audioPlayer setNumberOfLoops:-1];
if (error) {
    NSLog(@"%@", [error localizedDescription]);
    [[self volumeControl] setEnabled:NO];
    [[self playPauseButton] setEnabled:NO];
    [[self alertLabel] setText:@"Unable to load file"];
    [[self alertLabel] setHidden:NO];
} else {
    [[self alertLabel] setText:[NSString stringWithFormat:@"%@ has loaded", @"alarm.wav"]];
    [[self alertLabel] setHidden:NO];
    //Make sure the system follows our playback status
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    //Load the audio into memory
    [audioPlayer prepareToPlay];}

并用于 [audioPlayer play];启动声音并停止我使用[audioPlayer stop];。当我在同一个 ViewController 上时它工作正常,但是当我更改 ViewController 时[myViewController.audioPlayer stop];它不起作用。我正在使用故事板。

4

2 回答 2

0

Declare the instance of AVAudioPlayer at .h file as Global.

@property (nonatomic, retain) AVAudioPlayer *theAudio;

You can stop this from another controller

[objViewController.theAudio stop];

This works for me ..Hope it helps you too..

于 2013-10-23T10:57:27.660 回答
0

您可以在当前类中添加停止方法,并在单击按钮时在其他类中调用该方法。请在以下链接中找到代码片段

触发 AVAudioPlayer 以停止所有声音并播放选定的声音,除非单击播放(选定)按钮

再添加一个链接为什么切换视图时AVAudioPlayer停止方法不起作用

于 2013-10-23T10:51:15.970 回答