2013-04-15 61 views
0

當我切換視圖時,音樂會繼續播放背景什麼是我的應用程序的優點。但是,當用戶回到初始視圖時,音樂會重新開始播放,以便用戶聽到音樂的雙重響聲。我已經有一些代碼來檢查聲音是否已經播放,但它不起作用。 :(當切換視圖時,AVMusic會播放雙倍的視頻

有什麼想法?

if (audioPlayer.playing == 0) { 
    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/CheeZeeLab.mp3", [[NSBundle mainBundle] resourcePath]]]; 

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



    [audioPlayer stop]; 
    if (audioPlayer == nil) 
     NSLog(@"werkt niet"); 
    else 
     [audioPlayer play]; } 
else{ 

    } 
+0

你是如何初始化'audioPlayer'的? – KDaker

+0

With a modal segue –

回答

0

我敢打賭,你的問題是你如何轉回到你的初始視圖。

如果你推(或做與孩子SEGUE回父...即圓形SEGUE),您建立父視圖控制器的新實例。

並創建一個新的實例啓動音頻播放器中播放聲音的一個新版本。

您需要正確彈出視圖才能返回到上一個視圖控制器。

+0

我的項目有storyboards,segue是模態的。什麼是正確彈出視圖的最佳方式? –

+0

[This related question](http://stackoverflow.com/questions/9732499/how-to-dismiss-a-modal-that-was-presented-in-a-uistoryboard-with-a-modal-segue)may爲你解答。 –

+0

這段代碼適用於我:[self dismissModalViewControllerAnimated:YES] –

0

取決於你如何設置AVAudioPlayer,使用手動設置器和獲取器,使用屬性或者甚至是在構造器中。你遇到了一些問題。

當初始化的ViewController你分配一個AVAudioPlayer,如果一直播放,它沒有被釋放,並仍然保留。並且ViewController將不會被釋放,直到每個屬性的保留計數爲0.

回到主視圖並嘗試再次設置相同的ViewController後,我的猜測是您並未試圖推送相同的實例到堆棧。而是要創造一個新的實例並將其推向堆棧?這也使AVAudioPlayer。

這是一個猜測,因爲看不到你的整個代碼。但是,如果是這樣的話,我認爲你可以把事情做得更好。確保ViewController正確解除分配並釋放其所有屬性,然後再將新實例推入堆棧。