MediaItemCollection中的下一首歌?

时间:2014-05-19 12:35:20

标签: ios mpmusicplayercontroller mpmediaitem

如何在MPMediaItem集合中找到要播放的下一个项目的名称?我希望将其存储为MPMediaItem

我的songsViewControllertableView首歌曲。这是我didSelectRowAtIndexPath的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MPMediaItem *selectedItem;

    selectedItem = [[songs objectAtIndex:indexPath.row] representativeItem];

    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];

    [musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[songsQuery items]]];

    [musicPlayer setNowPlayingItem:selectedItem];

    nowPlayingViewController *nowPlaying = [[rightSideMenuViewController alloc]
                                            initWithNibName:@"nowPlayingViewController" bundle:nil];

    [self presentViewController:nowPlaying animated:YES completion:nil];

    [musicPlayer play];

}

我的UILabel上有一个nowPlayingViewController,当用户选择了一首歌时,会弹出MediaItemCollection。我想将UILabel /队列中下一个项目的标题存储在{{1}}中 - 所以这是预览下一首歌的内容。

非常感谢任何帮助,谢谢! :)

2 个答案:

答案 0 :(得分:1)

保留您的列表(因为您无法在音乐播放器队列中访问)。

@property (nonatomic, strong) NSArray *playlist;

当你这样做时:

 [musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[songsQuery items]]];

添加:

playlist = [songsQuery items];

要获取上一个/下一个:

-(MPMediaItem *)nextItem
{
     int currentIndex = [musicPlayer indexOfNowPlayingItem];
     MPMediaItem *nextItem = [playlist objectAtIndex:currentIndex+1];
     return nextItem
}

-(MPMediaItem *)previousItem
{
     int currentIndex = [musicPlayer indexOfNowPlayingItem];
     MPMediaItem *previousItem = [playlist objectAtIndex:currentIndex-1];
     return previousItem;
}

重要提示:
我没有检查当前项目是playlist中的第一个/最后一个项目(根据您是否需要上一个/下一个项目)。所以要小心NSArray的界限,否则你会得到:

NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index Z beyond bounds [X .. Y]

previousItem"存在&#34 ;? nextItem"是否存在"?

您可能还需要查看:

@property (nonatomic) MPMusicRepeatMode repeatMode

如果nextItem可能是第一个项目,或前一个项目是最后一个项目。

答案 1 :(得分:0)

MPMusicPlayerController提供以下实例方法以快速跳到下一首或上一首歌曲:

[musicPlayer skipToNextItem];

[musicPlayer skipToPreviousItem];