0

私はついに ViewDidLoad を使用してオーディオをループで再生しましたが、ViewDidDissapear でオーディオを停止するのに本当に苦労しています。これこれに加えて、このフォーラムで多くの回答と質問を読みました。[theAudio stop] を使用するとエラーが発生し、他のほとんどのチュートリアルでエラーが発生します。私は何を間違っていますか?

AVFoundation/AVFoundation.h フレームワークをインポートし、AVAudioPlayerDelegate を追加しました

    - (void)viewDidLoad
{

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

    [super viewDidLoad];

}
4

2 に答える 2

1

AVAudioPlayerインスタンスを @property として保存する必要があります。そうすれば、ViewWillDisappearイベントが発生したときに呼び出すことができ[theAudio stop];ます上記のコードでは、ローカル変数を作成しているため、後でそれを参照する方法はありません。

于 2013-01-23T19:30:24.000 に答える
0

コードは範囲外です。

theAudioviewWIllDisappearから呼び出すことができるようにするには、ivarを作成する必要があります。

// In viewDidLoad  -- you will need to setup theAudio in viewWillAppear if you are going to come back to this viewcontroller
if(theAudio == nil){
//initialize theAudio if it is nil
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]  error:NULL];
}
//begin playing
[theAudio play];
.
.
.



-(void)viewWillDisappear{
    //cleaning up if theAudio isn't nil, stop playing and set to nil;
    if(theAudio != nil){
       [theAudio stop];
       theAudio = nil;
    }
}
于 2013-01-23T19:31:33.863 に答える