2016-08-31 10 views
0

私は2トラックsound1,sound2,を持っています。私のアプリを起動するときviewController1sound1再生を開始します。次に、私はviewController2に入って、ボタンクリックでプレーヤーのトラックを変更したいと思います。しかし、私は混合したボタントラックをクリックします。ボタンをクリックしてトラックを正しく変更するにはどうすればよいですか?目的:プレーヤーのトラックを変更する

viewController1

NSString *soundFilePath = [NSString stringWithFormat:@"%@/%@.mp3",[[NSBundle mainBundle] resourcePath], @"sound1"]; 
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 
_player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil]; 
_player.numberOfLoops = 0; 
[_player play]; 

viewController2

_paths5 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
        _documentsDirectory5 = [_paths5 objectAtIndex:0]; 
        _filePath5 = [_documentsDirectory5 stringByAppendingPathComponent:@"sound2.mp3"]; 
        _fileExists5 = [[NSFileManager defaultManager] fileExistsAtPath:_filePath5 isDirectory:false]; 

        NSURL *soundFileURL = [NSURL fileURLWithPath:_filePath5]; 
        _player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil]; 
        _player.numberOfLoops = 0; 
        [_player play]; 
+0

'viewController1'の' viewWillDisappear'では、サウンドを止めることができました。問題は、 'viewController1'または' viewController2'の '_player'が同じではないということです。 「プレイリスト」はありません。 – Larme

+0

プレイリストの作成方法は? – user

答えて

0

あなたの最初のviewcontrollerがdisappeあるときだけ

[_player stop]; 

、などのプレーヤーを停止ared(すなわち、 in viewWillDisappear or viewDidDisappear)。

そしてviewWillAppearまたはviewDidloadの第2のviewControllerは、第2のサウンドファイルを再生します。それでおしまい。

は今、あなたは戻って最初のViewControllerに行けば、あなたのような音を停止することができ、その後二VCあなたのviewDidDidappear or viewWillDisappear第二VCの音を停止したい、

[_player stop]; 

viewWillAppearまたは最初のviewDidAppearで再びプレーすることができますVC。

あなたはこのようにあなたのものを管理することができます。

+0

2番目のviewController2で最初のサウンドフォームviewController1を停止できますか? – user

+0

あなたがそれをしたいのであれば、そのプレイヤーを 'prepareForSegue'や他の方法で2番目のviewcontrollerに送り、そのオブジェクトの' stop'メソッドを呼び出すことによって止めることができます – Lion

+0

prepareForSegueでそれを行う方法?コード例を教えてください。 – user

関連する問題