如何在弹出后停止以前的viewController活动

时间:2017-06-08 13:31:01

标签: ios swift3

我有一个导航控制器,使用push将其分割为第二个视图控制器。我用:

controller.navigationController!.popToRootViewController(animated: true)

这很有效。此代码导致我的控制器从堆栈弹出,并返回到根视图。但是,我仍然可以在根视图中听到我的代码运行(例如音乐/声音效果)。

我已经探索了一些途径。

一个是创建一个在按下后退按钮时运行的功能。目前,它会删除所有动作/暂停所有音乐:

func pauseAndRemoveEverything() {
    for child in fgNode.children { child.removeAllActions() }
    for child in bgNode.children { child.removeAllActions() }
    soundEffectsPlayer?.volume = 0
    musicPlayer?.volume = 0
    soundEffectsPlayer?.stop()
    musicPlayer?.stop()
}

第二个选项是使用多线程和调度小块代码;然后在用户点击后退按钮时全部取消它们。目前我的代码都在定时块上,我不知道调度会如何影响这个,或者它是否比它的价值更麻烦。

我希望前一个控制器上的操作完全停止在segue上,并减少它在发生这种情况时对内存和能量使用的影响。我该怎么做?

0 个答案:

没有答案