Iphone 如何从图书馆获取音乐文件
我正在开发一个应用程序。我需要从电话库中获取音乐文件。为此,我使用MPMediaPickerCOntroller。但它不会触发didpickingitem委托方法。我的代码如下所示Iphone 如何从图书馆获取音乐文件,iphone,Iphone,我正在开发一个应用程序。我需要从电话库中获取音乐文件。为此,我使用MPMediaPickerCOntroller。但它不会触发didpickingitem委托方法。我的代码如下所示 - (void)viewDidLoad { [super viewDidLoad]; MPMediaPickerController *picker =[[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic]; picker.del
- (void)viewDidLoad
{
[super viewDidLoad];
MPMediaPickerController *picker =[[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];
picker.delegate = self;
picker.allowsPickingMultipleItems = YES;
picker.prompt =@"Add songs to play";
[self presentModalViewController:picker animated: YES];
}
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
NSLog(@"sdfadsf");
NSLog(@"%@",mediaItemCollection);
NSArray *slist=[mediaItemCollection copy];
NSLog(@"%@",slist);
}
从这里阅读您是否在.h中声明了MPMediaPickerController远程网关 例: @界面FirstViewController:UIViewController 如果您不这样做,这将解释为什么该方法不触发。此外,我不相信它会在模拟器上工作;仅在设备上 编辑:
您确定要在
viewDidUnload
中执行此操作吗?它不适用于iPod Touch、iPhone和iPad。它叫做iPod库。我声明了它。我在模拟器上测试过。@user1400581是的,模拟器没有音乐,所以你不能在上面测试。我还编辑了我的帖子,向大家展示了我是如何展示媒体采集器的。注意:只有当媒体选择器启动且用户选择歌曲时,才会调用didPick方法。
-(IBAction)presentLibrary:(id)sender
{
//this is called from a button press, but you could do it in viewDidLoad
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];
picker.delegate = self;
picker.allowsPickingMultipleItems = NO;
picker.prompt = NSLocalizedString (@"Select any song from the list", @"Prompt to user to choose some songs to play");
[self presentModalViewController: picker animated: YES];
}
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
NSLog(@"didpick");
if (mediaItemCollection) {
[_mediaPlayer setQueueWithItemCollection: mediaItemCollection];
_mediaCollection = mediaItemCollection;
}
[mediaPicker dismissModalViewControllerAnimated:YES];
}