MPMusicPlayerController не переходит к следующему элементу автоматически после использования предиката

Я разрабатываю приложение для музыкального проигрывателя. У меня есть tableView, который содержит имена песен из библиотеки iPod. Моя проблема в том, что когда я выбираю ячейку, она воспроизводит определенную песню, но когда эта песня завершена, она не переходит к следующий элемент автоматически. Это мой код, когда я выбираю ячейку:

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

Мне очень нужна твоя помощь. Спасибо.


person chandal    schedule 02.06.2013    source источник


Ответы (1)


Он не переходит к следующей песне, потому что в очереди воспроизведения есть только один элемент. При запуске установите очередь воспроизведения на весь запрос песен. Также создайте массив MPMediaItem, используя свойство items MPMediaQuery:

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

В tableView:didSelectRowAtIndexPath: попросите музыкальный проигрыватель воспроизвести выбранный элемент, используя метод setNowPlayingItem: MPMusicPlayerController:

- (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

person Bryan Luby    schedule 03.06.2013
comment
Большое спасибо за ответ! Попробую :) - person chandal; 03.06.2013