我是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
可选(“最后一个孩子”)
请记住,如果再次点击,它将始终有效(无论您点击哪首歌)。如果你回到艺术家然后转发到歌曲,它将一直有效。没有其他玩家在后台玩游戏。提前感谢您的帮助。