【问题标题】:viewWillDisappear error/stop playing sound when i change viewController当我更改 viewController 时,viewWillDisappear 错误/停止播放声音
【发布时间】: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:什么是崩溃?编辑您的问题并添加崩溃日志/描述,以帮助我们更好地了解问题
  • 如果我的回答对您有用,您可以通过单击复选标记接受我的回答,以便其他有相同问题的人可以转到我的回答。

标签: ios swift audio


【解决方案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()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多