如何从其他ViewController停止AVAudioPlayer?

时间:2013-10-23 10:43:08

标签: ios avaudioplayer

我使用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];时,它工作正常。我正在使用Storyboard。

2 个答案:

答案 0 :(得分:0)

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

Trigger AVAudioPlayer to stop all sounds and play selected except when playing(selected) button is clicked

再添加一个链接Why does the AVAudioPlayer stop method not work when switching views

答案 1 :(得分:0)

AVAudioPlayer的{​​{1}}实例声明为全局。

.h file

您可以从其他控制器停止此操作

@property (nonatomic, retain) AVAudioPlayer *theAudio;

这对我有用..希望它也可以帮到你..