离开初始视图控制器时停止播放音乐(使用AVAudioPlayer)

时间:2012-03-25 15:42:36

标签: iphone ios xcode

- (void)viewDidLoad {
       [super viewDidLoad];

    NSURL *url = [NSURL fileURLWithPath: [NSString stringWithFormat:@"%@/Intro2.mp3", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = -1;

    if (audioPlayer == nil)
        NSLog([error description]);
    else 
        [audioPlayer play];
}

当应用加载初始视图控制器时,我的背景音乐会播放,并且循环播放。当我离开初始视图控制器时,音乐将继续在整个应用程序中播放,我希望当我离开初始视图控制器时音乐停止。

另外,也许它是无关的,但我在这行代码上有一个问题(黄色!):

NSLog([error description]);

2 个答案:

答案 0 :(得分:1)

如果音乐继续播放,则意味着仍然保留视图控制器。例如,它是导航视图控制器的根视图控制器。

要在不再显示视图控制器时停止播放音乐,您应该使用方法viewWillDisappear

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [audioPlayer stop]; // Or pause
}

如果您希望在再次显示视图控制器时恢复音乐,请使用方法viewWillAppear

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [audioPlayer play];
}

要删除警告,请更改以下行:

NSLog([error description]);

成:

NSLog(@"%@", [error description]);

答案 1 :(得分:0)

也许我误会了,但您只需使用下面的UIView生命周期事件之一就stop的实例调用AVAudioPlayer

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}