如何使用 MPMusicPlayerController 从特定索引播放 MPMediaItemCollection?
Posted
技术标签:
【中文标题】如何使用 MPMusicPlayerController 从特定索引播放 MPMediaItemCollection?【英文标题】:How to play MPMediaItemCollection from a particular index using MPMusicPlayerController? 【发布时间】:2014-10-19 06:31:35 【问题描述】:我的应用中有一个播放列表屏幕,用户可以在其中选择播放列表中的任何歌曲,应用将从该歌曲开始播放。
我使用以下代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
MPMediaItem *selectedSong = [currentQueue.items objectAtIndex:indexPath.row];
[audioCoordinator.musicController setNowPlayingItem: selectedSong];
[audioCoordinator playAllSound];
它适用于包含所有不同歌曲的播放列表,但由于此播放列表允许重复歌曲,问题就来了。对于这个播放列表:
-
很久很久以前
我的十二月
很久很久以前
当用户点击第 3 首歌曲时,应用会播放第 1 首歌曲,因为它们具有相同的名称,这不是正确的行为。
我们如何为 MPMusicPlayerController 的 setNowPlayingItem 函数提供一个索引,以便它可以从那里开始播放?
【问题讨论】:
【参考方案1】:找到解决方案:
在函数playAllSound中:
while (self.musicController.indexOfNowPlayingItem != self.currentSongIndex)
[self.musicController skipToNextItem];
这里 self.currentSongIndex 的值与 indexPath.row 相同,因为 tableViewController 的 didSelectCell
函数中有一个 audioCoordinator.currentSongIndex = indexPath.row
行。
【讨论】:
【参考方案2】:很明显 selectedSong 基于 indexPath.row,记录 indexPath.row 你检查 playAllSound 我认为它应该播放
【讨论】:
对不起,我不明白你想说什么,但是你的“记录 indexPath.row 并检查 playAllSound”给了我灵感,我找到了解决方案,所以谢谢。 我的意思是说我们正在参考点击的单元格选择正确的歌曲,但您使用的是 playAllSound,在我看来,它只播放一首歌曲的 shud b playSound 不好意思,playAllSound 是一个播放一首歌曲的函数,但它之所以称为“AllSong”,是因为它不仅播放歌曲,还会同时播放其他歌曲。以上是关于如何使用 MPMusicPlayerController 从特定索引播放 MPMediaItemCollection?的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]
如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?