2

我正在开发一个音乐播放器应用程序。我有一个包含 ipod 库的歌曲名称的 tableView。我的问题是,当我选择一个单元格时,它会播放一首特定的歌曲,但是当这首歌完成时,它不会跳到下一个项目自动。这是我选择单元格时的代码:

MPMediaQuery *mq  = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *songNamePredicate = [MPMediaPropertyPredicate               
predicateWithValue:[songsTitle objectAtIndex:indexPath.row]     
forProperty:MPMediaItemPropertyTitle];
[mq addFilterPredicate:songNamePredicate];
[mp setQueueWithQuery:mq];
[mp play]; 

我真的需要你的帮助。谢谢。

4

1 回答 1

3

它不会跳到下一首歌曲,因为播放队列只有一个项目。在启动时,将播放队列设置为整个歌曲查询。MPMediaItem还使用 s 的items属性创建一个 s 数组MPMediaQuery

MPMediaQuery *songsQuery = [MPMediaQuery songsQuery];
self.songs = songsQuery.items;
[self.musicPlayer setQueueWithQuery:songsQuery];

在中,让音乐播放器使用's方法tableView:didSelectRowAtIndexPath:播放所选项目:MPMusicPlayerControllersetNowPlayingItem:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MPMediaItem *song = self.songs[indexPath.row];
    [self.musicPlayer setNowPlayingItem:song];
    [self.musicPlayer play];
}

这是一个示例项目,演示了这一点: https ://dl.dropboxusercontent.com/u/1990969/SongsPlayerTableView.zip

于 2013-06-03T17:02:47.543 回答