Хватит проигрывать музыку на третьем ViewController - Swift 4 - PullRequest
0 голосов
/ 06 июня 2018

У меня есть первый цикл фоновой музыки на моем первом ViewController, который выглядит следующим образом:

func setupMusic() {

    if audioEnabled == true {

        let soundFile = Bundle.main.path(forResource: "bgMusic", ofType: ".wav")

        do {
            try bgmusic = AVAudioPlayer (contentsOf: URL(fileURLWithPath: soundFile!))
        }  catch {
            print (error)
        }

        bgmusic.numberOfLoops = -1
        bgmusic.volume = 0.3
        bgmusic.play()

    }
}

Я хотел бы знать, как я могу остановить воспроизведение этой фоновой музыки в другой сцене, в моем случае -экран «Настройки пользователя», когда пользователь выбирает кнопку отключения звука.

bgmusic.stop() \\ Wont work because the object 'bgmusic' is not instantiated in the new scene?

1 Ответ

0 голосов
/ 06 июня 2018

Опция 1

class Service {

   static let shared = Service()
    var gmusic :AVAudioPlayer?
}

try Service.shared.gmusic = AVAudioPlayer (contentsOf: URL(fileURLWithPath: soundFile!))

, затем используйте

Service.shared.gmusic?.stop()

Опция 2

в CurrentVC

 let settingsVc = //

 settingsVc.delegate = self

 present(settingsVc

//

 calss SettingsVC:UIViewController {

    var delegate:CurrentVC?

    func stop () {

     delegate?.gmusic.stop()

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...