Swift 2.0 MPMusicPlayerController在初始点击时不会总是播放歌曲

时间:2016-07-30 18:03:40

标签: ios swift audio mpmusicplayercontroller

我是Swift的新手并花了几天时间研究,但我似乎无法弄清楚为什么我的代码只会在应用程序首次“启动”时大约75%的时间播放所选歌曲。该应用程序有3个VC:艺术家,专辑,歌曲。当你进入歌曲VC时,用户点击一首歌但不会总是播放。它大部分时间都会(并且此时没有其他任何东西在播放)。

class ViewController: UIViewController {
    var qrySongs = MPMediaQuery()
    var myMPMusicPlayerController = MPMusicPlayerController()

override func viewDidLoad() {
    super.viewDidLoad()
    self.myMPMusicPlayerController = MPMusicPlayerController.systemMusicPlayer()
    // Query songs
    let predicateByAlbumTitle = MPMediaPropertyPredicate(value: selectedAlbumTitle, forProperty: MPMediaItemPropertyAlbumTitle)
    qrySongs = MPMediaQuery.songsQuery()
    qrySongs.addFilterPredicate(predicateByAlbumTitle)
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let myCollectionToPlay = MPMediaItemCollection(items: qrySongs.items!)
    self.myMPMusicPlayerController.setQueueWithItemCollection(myCollectionToPlay)
    self.myMPMusicPlayerController.nowPlayingItem = myCollectionToPlay.items[indexPath.row]
    print ("Starting to play selectedSongIndexNum = ", indexPath.row)
    self.myMPMusicPlayerController.prepareToPlay()
    self.myMPMusicPlayerController.play()
    if self.myMPMusicPlayerController.playbackState != .Playing {
        self.myMPMusicPlayerController.play()  // Try again
    }
    print (myMPMusicPlayerController.nowPlayingItem?.title)
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "songIdCell")
    let rowItem = qrySongs.collections![indexPath.row]
    cell.textLabel!.text = rowItem.items[0].title
    }
}

不起作用时的输出:

开始播放selectedSongIndexNum = 7

当它工作时输出(加上正在播放的歌曲):

开始播放selectedSongIndexNum = 7

可选(“最后一个孩子”)

请记住,如果再次点击,它将始终有效(无论您点击哪首歌)。如果你回到艺术家然后转发到歌曲,它将一直有效。没有其他玩家在后台玩游戏。提前感谢您的帮助。

0 个答案:

没有答案