按下后退按钮时音频停止播放

Posted

技术标签:

【中文标题】按下后退按钮时音频停止播放【英文标题】:Audio stops playing when back button is pressed 【发布时间】:2017-12-26 17:39:53 【问题描述】:

在我的示例项目中,当点击 czsm 栏按钮项时,音频应该继续播放而不是停止。

这是列出歌曲的代码:

import Firebase
import Nuke

struct getSongIndex 
    static var selectedIndex      : NSInteger!
    static var selectedUrl        : String?
    static var selectedArtistName : String?
    static var selectedSongName   : String?
    static var arrayurl        = [String]()
    static var arraysongname   = [String]()
    static var arrayartistname = [String]()
    static var arrayimageurl   = [String]()


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: 
  IndexPath) 
    
    getSongIndex.selectedIndex      = indexPath.row
    print("selected index is:::",getSongIndex.selectedIndex)
    getSongIndex.selectedUrl        = musicList[indexPath.row].songUrl
    getSongIndex.selectedSongName   = musicList[indexPath.row].songName
    getSongIndex.selectedArtistName = musicList[indexPath.row].artistName


    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc         = storyboard.instantiateViewController(withIdentifier: 
    "ViewController") as! MainViewController

    self.navigationController!.pushViewController(vc, animated: true)

这是播放歌曲的代码,当一首歌曲被选中时,它会导航到 mainviewcontroller 来播放它。

var musiclist = [MusicList]()
var player     : AVPlayer?
var playerItem : AVPlayerItem?
var playButton : UIButton?
var isClicked      : Bool = false
var songPostion    : NSInteger = 0
var someValue      : NSInteger = 0
var getsongPostion : NSInteger = 0
var getSongUrl     : String?
var getArtistName  : String?
var getSongName    : String?
func playFunc()
    if getSongIndex.arrayurl.count > getsongPostion
        centerButton.isHidden = true
        playButton?.isHidden = true
        pauseButton.isHidden = false

        let url = URL(string: getSongIndex.arrayurl[getsongPostion])

        let playerItem:AVPlayerItem = AVPlayerItem(url: url!)
        player = AVPlayer(playerItem: playerItem)
        if player?.rate == 0
        
            player!.play()

         else 
            player!.pause()

        

        songName.text   = getSongIndex.arraysongname[getsongPostion]
        artistName.text = getSongIndex.arrayartistname[getsongPostion]

    

但是,当我按下 czsm 按钮返回列表视图控制器时,音频应该会继续播放。

【问题讨论】:

playFunc() 实际调用在哪里? @UpholderOfTruth playbtn、previousbtn、nextbtn 和 viewWillAppear 在主视图控制器中。 如果您的播放器对象超出范围并被处理掉,就会发生这种情况。如何处理两个视图控制器之间的导航,即当您导航回列表视图控制器时,主视图控制器被丢弃。 【参考方案1】:

var player : AVPlayer?

在类外声明播放器(主视图控制器)

现在可以正常使用了

【讨论】:

以上是关于按下后退按钮时音频停止播放的主要内容,如果未能解决你的问题,请参考以下文章

如何在按下按钮时播放音频并在我的手指离开同一个按钮时立即停止?

在Android中,当我播放音频并转到其他活动时,音频回来后不会停止

音频在 iPhone 和模拟器上播放正常,但在 iPad 上被切断

单击后退按钮iOS 6时如何继续播放音频

在 Kotlin 上按下按钮时如何停止录制 AudioRecord

如何在黑莓中播放音频作为背景