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

再生キューに項目が 1 つしかないため、次の曲にスキップしません。起動時に、再生キューを曲全体のクエリに設定します。のプロパティをMPMediaItem使用して の配列も作成します。itemsMPMediaQuery

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

では、のメソッド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 に答える