2016-12-06 5 views
0

別のビューに変更するときに、バックグラウンドミュージックの再生を停止しようとしています。Swift:ビューを変更するときにバックグラウンドミュージックを停止する方法

ビューの変更があることを提供するたびに、私はただ、プレーヤーを停止するには、コードの下に書く音楽

import Foundation 
import AVFoundation 

class MusicHelper { 
    static let sharedHelper = MusicHelper() 
    var audioPlayer: AVAudioPlayer? 

    func playBackgroundMusic() { 
     let aSound = NSURL(fileURLWithPath: Bundle.main.path(forResource: "The Walking Dead", ofType: "mp3")!) 
     do { 
      audioPlayer = try AVAudioPlayer(contentsOf:aSound as URL) 
      audioPlayer!.numberOfLoops = -1 
      audioPlayer!.prepareToPlay() 
      audioPlayer!.play() 
     } catch { 
      print("Cannot play the file") 
     } 
    } 
} 

を再生するには、グローバル変数を持っている。そして、私はここにビューに音楽を読み込む

import UIKit 
import SwiftGifOrigin 
import AVFoundation 

class ViewController: UIViewController { 
    var audioPlayer: AVAudioPlayer? 

    @IBOutlet weak var introGif: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Gif intro 
     self.introGif.image = UIImage.gifWithName("WalkingDeadIntro") 

     _ = try! Data(contentsOf: Bundle.main.url(forResource: "WalkingDeadIntro", withExtension: "gif")!) 
     //self.bottomImageView.image = UIImage.gif(data: imageData) 

     // Load background Music 
     MusicHelper.sharedHelper.playBackgroundMusic() 
    } 
+0

たとえば、viewWillDisappear()にMusicHelper.sharedHelper.stopBackgroundMusic()を追加すると何が問題になりますか? – Gruntcakes

答えて

0

audioPlayerはあなたが言及したようにグローバル変数です。

override func viewWillDisappear() { 
audioPlayer.stop() 
} 
+0

私は以前試したとオーバーライドが唯一のクラスメンバーに指定することができました一つの方法のthats – sheeno12

+0

//ロードの背景音楽 MusicHelper.sharedHelper.playBackgroundMusic(){viewWillDisappear FUNC オーバーライド(){ audioPlayer!.stop() } – sheeno12

関連する問題