(Swift2.3) Доступ к экземпляру класса из другого класса

Новое в Swift. Я пытаюсь контролировать воспроизведение фоновой музыки в моем приложении. В настоящее время у меня музыка запускается в моем MainTabController. Он играет, как и ожидалось, когда я перемещаюсь по остальным 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, но он возвращает ноль. Я предполагаю, что я на самом деле делаю новый экземпляр MainTabController? Если да, то как мне получить доступ к тому же экземпляру MusicHelper?

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

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

        // other code
    }

}

Я не получаю никаких явных ошибок, но если я установлю точку останова, я ясно вижу, что audioController равен нулю.

Спасибо

1 ответ

Решение

+ Изменить var audioPlayer: AVAudioPlayer? за public static var audioPlayer: AVAudioPlayer?

и позвонить

if MusicHelper.audioPlayer != nil{
 MusicHelper.audioPlayer.stop()
}
Другие вопросы по тегам