如何在Xcode中创建一个全局停止AVAudioPlayer的按钮?

时间:2018-03-31 07:25:34

标签: swift xcode avaudioplayer

我正在尝试让tableviewcell在点击时停止应用中的所有声音。我知道如何使用soundEffect.stop() soundEffect.currentTime = 0来停止声音,但我不知道如何将其应用于单元格,如果StopSound按钮位于另一个具有不同类的viewController上,则这不起作用。如何创建一个全局停止AVAudioPlayer并将其应用于单元格的函数?

2 个答案:

答案 0 :(得分:0)

问题是玩家并不孤单。 Try this

要在另一个ViewController上停止AVAudioPlayer,您可以使用NotificationCenter。

示例......

第一次,在VC上添加功能,你需要停止AVAudioPlayer。

@objc func stopAVonThisVC() {
    AVaudioPlayer.stop()
}

其次,在此VC上添加NotificationCenter观察者,然后在点击按钮后添加。

    // At VC, where you need to stop AVAudioPlayer.
NotificationCenter.default.addObserver(self, selector:
    #selector(stopAVonThisVC), name: NSNotification.Name("Stop at VC1"), object: nil)
    // At VC2
NotificationCenter.default.post(name: NSNotification.Name("Stop at VC1"), object: nil)

抱歉英语不好。

答案 1 :(得分:0)

为您的项目创建一个BaseViewController,并从那里继承所有视图控制器,

在BaseViewController中定义AVAudioPlayer并从任何子类调用soundEffect.stop() soundEffect.currentTime = 0,它应该解决问题。

示例:

    class BaseViewController: UIViewController {
    var audioPayer: AVAudioPlayer!
     }


    class ViewControllerA: BaseViewController { 
    //start or stop audio player
    }

    class ViewControllerB: BaseViewController {
    //start or stop audio player
    }