(Swift2.3)从另一个 class 访问 class 实例

(Swift2.3)Accessing class instance from another class

Swift 的新手。我正在尝试控制我的应用程序上背景音乐的播放。我目前在我的 MainTabController 中开始播放音乐。当我浏览其余 VC 时,它按预期播放。但是,我希望它在显示某些 VC 时停止。

我设置了 MusicHelper class。

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 为 nil。

谢谢

var audioPlayer: AVAudioPlayer? 更改为 public static var audioPlayer: AVAudioPlayer?

并打电话给

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