Воспроизведение музыки при выборе UITableViewCell

#iphone #cocoa-touch #mpmusicplayercontroller #mpmediaitem

#iPhone #cocoa-touch #mpmusicplayercontroller #mpmediaitem

Вопрос:

Я могу показывать музыкальную библиотеку в UITableView.

   songsArray = [[NSMutableArray alloc]init];
MPMediaQuery *playlistQuery = [[MPMediaQuery alloc]init];
[playlistQuery setGroupingType:MPMediaGroupingTitle];
songArray = [playlistQuery items];
for (MPMediaItem *song in songArray) {
    NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];        
    [songsArray addObject:songTitle];
}
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:                (NSIndexPath *)indexPath {
    cell.textLabel.text = [songsArray objectAtIndex:row];
[cell.textLabel setTextColor:[UIColor whiteColor]];
  

Но я не могу воспроизводить музыку, когда я выбрал UITableView ячейку.

     NSUInteger row = indexPath.row;

NSString *selectedSong = [songsArray objectAtIndex:row];
MPMusicPlayerController *appPlayer = [MPMusicPlayerController iPodMusicPlayer];

[appPlayer setQueueWithQuery:selectedSong];

[appPlayer play];

}
  

Комментарии:

1. Работает ли MPMusiePlayerController без TableView, если вы вручную выбираете песню?

2. Да, я выбираю песню без MediaPicker.

3. Я выберу песню, подобную музыкальному проигрывателю iPhone по умолчанию (iPod)

Ответ №1:

Ах, я вижу проблему:

Переместить этот код:

 NSUInteger row = indexPath.row;
NSString *selectedSong = [songsArray objectAtIndex:row];
MPMusicPlayerController *appPlayer = [MPMusicPlayerController iPodMusicPlayer];
[appPlayer setQueueWithQuery:selectedSong];
[appPlayer play];
  

к методу протокола UITableViewDelegate ‘didSelectRowAtIndexPath’, подобному этому:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger row = indexPath.row;
    NSString *selectedSong = [songsArray objectAtIndex:row];
    MPMusicPlayerController *appPlayer = [MPMusicPlayerController iPodMusicPlayer];
    [appPlayer setQueueWithQuery:selectedSong];
    [appPlayer play];
}
  

Редактировать

Документация:

Комментарии:

1. несовместимые типы Objective-C ‘struct NSString *’, ожидаемые ‘struct MPMediaQuery *’ при передаче аргумента 1 ‘setQueueWithQuery:’ из другого типа Objective-C. Что не так?

2. setQueueWithQuery ожидает объект MPMediaQuery. Пожалуйста, обратитесь к документации Apple.

3. Но я не могу найти никаких документов об UITableView.

4. Я добавил несколько ссылок на документацию, которые могли бы быть вам полезны.