(Swift2.3)从另一个类

时间:2017-10-29 01:13:12

标签: xcode8 swift2.3

Swift的新手。我试图控制我的应用程序背景音乐的播放。我目前在我的MainTabController中启动音乐。当我浏览其他VC时,它会按预期播放。但是,我想在显示某些VC时停止。

我已经设置了MusicHelper课程。

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

func playBackgroundMusic(file : String, repeats : Int) {
    let aSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(file, ofType: "mp3")!)
    do {
        audioPlayer = try AVAudioPlayer(contentsOfURL:aSound)
        audioPlayer!.numberOfLoops = repeats
        audioPlayer!.prepareToPlay()
        audioPlayer!.play()
    } catch {
        print("Cannot play the file")
    }
}

func togglePlayer(){
    if((audioPlayer?.playing) == true){
        audioPlayer?.stop()
    }else{
        audioPlayer?.play()
    }
}
}

我最初是如何在MainTabController中启动音乐的:

class MainTabController: UINavigationController {

var bgMusic : MusicHelper = MusicHelper()

override func viewDidLoad() {
    super.viewDidLoad()
    // other code
    bgMusic.playBackgroundMusic("music_background", repeats: -1)
}   
}

我正在尝试访问同一个bgMusic实例,但它返回nil。我的假设是我实际上正在创建一个MainTabController的新实例?如果是这样,我将如何访问MusicHelper的同一个实例?

class VideoViewController: OrientationLockedVC {
    //Other code
    var mVC : MainTabController = MainTabController()

    func onImage() {
        //other code
        mVC.bgMusic.audioPlayer!.stop()

        // other code
    }

}

我没有得到任何明确的错误,但如果我设置了一个断点,我可以清楚地看到audioController是零。

由于

1 个答案:

答案 0 :(得分:0)

更改var audioPlayer: AVAudioPlayer?

public static var audioPlayer: AVAudioPlayer?

并致电

if MusicHelper.audioPlayer != nil{
 MusicHelper.audioPlayer.stop()
}