2012-03-25 88 views
0
- (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]; 
} 

當應用程序加載初始視圖控制器並且循環良好時,我的背景音樂播放。當我離開初始視圖控制器時,音樂會繼續播放整個應用程序,當我離開初始視圖控制器時,我希望音樂停止播放。當離開初始視圖控制器時停止播放音樂(使用AVAudioPlayer)

而且,也許是無關的,但我有一個問題,在此行的代碼(黃色!):

NSLog([error description]); 

回答

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]); 
+0

謝謝你的工作完美。 – Austinj 2012-03-25 16:19:45

0

也許我誤解,但你可以簡單地使用下面的UIView生命週期事件的一個叫stop您的AVAudioPlayer實例。

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

- (void)viewDidDisappear:(BOOL)animated 
{ 
[super viewDidDisappear:animated]; 
} 
相關問題