2011-08-28 54 views
1

我在學習其他課程中的一個班級的語音時遇到了麻煩。我在ViewDidLoad中播放聲音,然後我有主要類的應用程序MainView,我想停止從ViewDIdLoad聲音。我搜索論壇並沒有找到解決辦法。 Could你認罪幫助我?停止不同類別的AVAudioplayer

VievDidLoad是在gdziedotykViewController.m

NSString *path = [[NSBundle mainBundle] pathForResource:@"farmaglownaloop" ofType:@"mp3"]; 
startdzwiek = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
startdzwiek.numberOfLoops = -1; 
[startdzwiek play]; 

- (void)stopping{ 
[startdzwiek stop]; 

}

,我想在MainView.m類

gdziedotykAppDelegate *dzwiekdelegat = (gdziedotykAppDelegate*)[[UIApplication sharedApplication] delegate]; 
     [dzwiekdelegat stopping]; 

回答

0

您正在創建視圖的新實例停止聲音控制器。這將啓動一個新的AVAudioPlayer並停止它。顯然,這是行不通的。

相反,你既可以

  1. 保留現有的視圖控制器的參考通過使其成爲MainView的委託,然後簡單地調用[self.delegate stop];播放聲音。
  2. 或者你可以管理你的應用程序代理的聲音播放器,並簡單地用

[[[UIApplication sharedApplication] delegate] start];
[[[UIApplication sharedApplication] delegate] stop];

,你必須實現在應用startstop通知來自兩類委託代表。

+0

好吧,所以我從viewDidLoad所有關於聲音,並將其移動到appDelegate.h,然後我寫無效停止聲音也在AppDelegate。然後我粘貼[[[UIApplication sharedApplication]委託]停止] ;.聲音是一流的,但有錯誤:「停止找不到協議」 – Rafal

+0

好吧,最後我做到了。我上面編輯了我的代碼。非常感謝。我搬到了adddelegate.m void停止和聲明的聲明,然後我編輯MainView.m – Rafal