当我更改 viewController 时,viewWillDisappear 错误/停止播放声音
Posted
技术标签:
【中文标题】当我更改 viewController 时,viewWillDisappear 错误/停止播放声音【英文标题】:viewWillDisappear error/stop playing sound when i change viewController 【发布时间】:2017-12-24 15:33:23 【问题描述】:我有一些 ViewCotroller,我在其中点击了一个按钮 - 一些音频文件正在播放。我想在更改/关闭此 ViewController 时停止播放音频。我该怎么做?
我尝试向 viewWillDisappear 添加一些方法,如果我不点击任何按钮,它就会崩溃。但是,如果我点击了某个按钮 - 它会正常工作。 ????
import UIKit
import AVFoundation
class BossViewController: UIViewController
var audioPlayer = AVAudioPlayer()
override func viewDidLoad()
super.viewDidLoad()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
//MARK: - Stop sound when we're change/close this viewController
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(animated)
audioPlayer.stop()
这是我的按钮的样子:
@IBAction func boss1(_ sender: AnyObject)
let audioFile = NSURL(fileURLWithPath: Bundle.main.path(forResource: "shamp", ofType: "mp3")!)
do
audioPlayer = try AVAudioPlayer(contentsOf: audioFile as URL)
audioPlayer.prepareToPlay()
catch
print("Problem in getting File")
audioPlayer.play()
【问题讨论】:
@a-lebedko:什么是崩溃?编辑您的问题并添加崩溃日志/描述,以帮助我们更好地了解问题 如果我的回答对您有用,您可以通过单击复选标记接受我的回答,以便其他有相同问题的人可以转到我的回答。 【参考方案1】:您可以检查音频播放器是否正在播放,正如@SandeepBhandari 提到的,或者您可以使用Bool
变量来跟踪用户是否点击了按钮:
var buttonTapped = false
@IBAction func boss1(_ sender: AnyObject)
...
buttonTapped = true
然后,您可以在viewWillDisappear(_ animated: Bool)
方法中检查变量:
override func viewWillDisappear(_ animated: Bool)
if buttonTapped
audioPlayer.stop()
【讨论】:
以上是关于当我更改 viewController 时,viewWillDisappear 错误/停止播放声音的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 使用 selectedIndex 更改 var
无法将 tabBarController.viewController 转换为 UINavigationController
Swift UIcollectionView 在同一个 ViewController 上更改第二个 UICollectionView 的内容?