2017-04-12 10 views
1

私のタイトルを真に理解してもらうためには、本質的に;私は2つのView Controllerをモーダルセグにリンクしています。最初のViewの主な機能の最初の作業部分は次のようになります。スウィフト3:リターン・セグを使って効果音を再生する

@IBAction func beginButton(_ sender: Any) { 
     audioPlayer.play() 
      } 

第2のビューコントローラは次のように設定されています。これは完全にこの作業を取得する方法上の任意のアイデアをいただければ幸い同じaudioPlayer

func performSegueToReturnBack() { 
     audioPlayer.play() 
      if let nav = self.navigationController { 

       nav.popViewController(animated: true) 
      } else { 

       self.dismiss(animated: true, completion: nil) 
      } 

    } 

を再生することが望ましいことを除く機能。助けてくれてありがとう!

+0

正確に何をしたいですか? – Jack

+0

私が欲しいのは、performSegueToReturnBack関数がaudioPlayerを正常に再生できることです。関数はそれを試してみて – Jordy

+0

呼び出されたときには音が出ない - 'viewWillDisappear(_アニメーション:ブール値)FUNCオーバーライド{ super.viewWillDisappear(真) audioPlayer.playを() }' – Jack

答えて

1

コードが不足しているようです。これはあなたがしようとしていることを達成する方法です。

var audioPlayer = AVAudioPlayer() 
    let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: "CheckoutScannerBeep", ofType: "mp3")!) // If sound is not in an asset 
    //let alertSound = NSDataAsset(name: "CheckoutScannerBeep") // If sound is in an Asset 

func testSound(){ 
    do { 
     //  audioPlayer = try AVAudioPlayer(data: (alertSound!.data), fileTypeHint: AVFileTypeMPEGLayer3) //If in asset 
     audioPlayer = try AVAudioPlayer(contentsOf: alertSound) //If not in asset 
     audioPlayer.pan = -1.0 //left headphone 
     //audioPlayer.pan = 1.0 // right headphone 
     audioPlayer.prepareToPlay() 
     audioPlayer.volume = 50 
     audioPlayer.play() 
    } catch { 
     print("error") 
    } 

} 

func performSegueToReturnBack() { 
    testSound() 
     if let nav = self.navigationController { 

      nav.popViewController(animated: true) 
     } else { 

      self.dismiss(animated: true, completion: nil) 
     } 

} 
関連する問題