MediaItemCollection中的下一首歌



如何找出MPMediaItem集合中下一个项目的名称?我更愿意将其存储为MPMediaItem

我有一个songsViewController,它有所有歌曲的tableView。这是我的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];
}

我在我的nowPlayingViewController上有一个UILabel,当用户选择了一首歌时,它会弹出。我想在MediaItemCollection/队列中存储下一个项目的标题,以便在UILabel中-因此它是下一首歌曲的预览。

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

保留您的列表(因为您无法访问musicplayer队列)

@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"存在"吗?nextItem"存在"吗?

您可能还需要查看:

@property (nonatomic) MPMusicRepeatMode repeatMode

如果nextItem可能是第一项,或者前一项是最后一项

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

[musicPlayer skipToNextItem];
[musicPlayer skipToPreviousItem];

相关内容

  • 没有找到相关文章

最新更新