#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. Я добавил несколько ссылок на документацию, которые могли бы быть вам полезны.