切换多个视图控制器时,如何在 didMoveToView() 中调用一次歌曲?

Posted

技术标签:

【中文标题】切换多个视图控制器时,如何在 didMoveToView() 中调用一次歌曲?【英文标题】:How to call a song in didMoveToView(), once, when switching through several view controllers? 【发布时间】:2016-08-11 01:02:10 【问题描述】:

我有一个与这个家伙一年前问过的问题类似的问题。不同的是我无法修复它。

How can I continuously play background music while switching to different views using swift?

一位用户这样回答他的问题: “你可以从 AppDelegate 开始和停止你的音乐......最好的方法是创建一个 MusicPlayer 类,在 AppDelegate 中实例化它并在其中调用开始和停止方法......

你有足够的经验来写这样的东西吗?

或者我应该帮助你吗?”

也许我需要编辑应用委托?下面是我的 viewDidLoad 函数的样子。这是我调用音频的地方,但是每次我加载视图控制器时,除了第一次加载之外,它还会加载并播放歌曲。无论我在哪个视图中,如何播放将加载到视图控制器中并在应用程序运行时播放的歌曲?

    override func viewDidLoad() 
        super.viewDidLoad()

            let path = NSBundle.mainBundle().pathForResource("Theme", ofType: "wav")

            let soundURL = NSURL(fileURLWithPath: path!)

            do 
                try theme = AVAudioPlayer(contentsOfURL: soundURL)
                theme.prepareToPlay()
            catch let err as NSError 
                print(err.debugDescription)
           
// trying to make the music refrain from playing simultaneously
             if !theme.playing 
                theme.play()
           

                theme.numberOfLoops = -1
        

【问题讨论】:

【参考方案1】:

只需将所有音频播放器代码放入应用程序委托文件的 didFinishLaunchingWithOptions 方法中即可。这将在应用程序首次启动时仅播放一次音频文件,直到被告知不要播放为止。

【讨论】:

以上是关于切换多个视图控制器时,如何在 didMoveToView() 中调用一次歌曲?的主要内容,如果未能解决你的问题,请参考以下文章

切换到另一个视图控制器时,如何保持标签栏可见? [关闭]

如何正确切换 UIViews

如何切换视图

切换标签栏项目时,UINavigationController 如何将其整个视图控制器表示层次结构保存在内存中?

切换选项卡时删除所有子视图控制器并移至父视图控制器 IOS 目标 c

UI-Router:如何在切换视图时保留视图