我在iOS 7上开发了测试应用程序,使用MPMediaPickerController从音乐库中选择音乐。 但是当我呈现媒体选择器控制器时,它显示空屏幕。 这是代码
(void) pickSong
{
MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];
mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = NO;
mediaPicker.prompt = NSLocalizedString(@"Select Your Favourite Song!", nil);
[mediaPicker loadView];
[self.navigationController presentViewController:mediaPicker animated:YES completion:nil];
}
#pragma mark - MPMediaPickerController delegate
(void) mediaPicker:(MPMediaPickerController *) mediaPicker2 didPickMediaItems:(MPMediaItemCollection *) mediaItemCollection {
[self dismissViewControllerAnimated:YES completion:nil];
MPMediaItem *mediaItem = [[mediaItemCollection items] objectAtIndex:0];
self.item.soundName = [mediaItem valueForProperty:MPMediaItemPropertyTitle];
self.item.soundUrl = [[mediaItem valueForProperty:MPMediaItemPropertyAssetURL] absoluteString];
}
(void) mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker{
[self dismissViewControllerAnimated:YES completion:NULL];
}
请帮帮我。
答案 0 :(得分:4)
这是一个iOS错误,但只有在64位(A7)设备上运行32位版本时才会出现(目前仅限iPhone 5S)。要解决此问题,请在您的应用中添加64位架构。 (在xcode中打开构建设置,并将架构从$ ARCHS_STANDARD更改为$ ARCHS_STANDARD_INCLUDING_64_BIT。)然后,您可能需要修复许多编译,链接和运行时问题。请参阅Apple的64位过渡指南。
答案 1 :(得分:2)
似乎ios7中存在一个错误,它不希望在uinavigation控制器中显示 - 尝试直接从视图控制器中呈现它。
答案 2 :(得分:2)
我遇到了同样的问题,对我而言,解决方案是这里介绍的两种解决方案的组合。首先,我必须通过将架构更改为“标准...(包括64位)”来将我的应用程序转换为64位。一旦我纠正了所有引起的警告,我就不得不将MPMediaPickerController
改为以模态方式而不是导航堆栈上显示:
- (IBAction)didSelectMusicPicker:(id)sender {
MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic];
picker.delegate = self;
picker.allowsPickingMultipleItems = YES;
picker.prompt = NSLocalizedString (@"Add songs to play", "Prompt in media item picker");
//[self.navigationController pushViewController:picker animated:YES];
[self presentViewController:picker animated:TRUE completion:NULL];
}
当然,我还需要更改mediaPicker:didPickMediaItems:
和mediaPickerDidCancel:
以使用dismissViewControllerAnimated
。完成所有修复后,选择器在运行iOS 7的iPhone 4和iPhone 5S上按预期工作。
答案 3 :(得分:1)
一个想法:显示的屏幕完全为空,或者您是否在底部获得了导航栏但没有列出任何曲目?我注意到,从iOS 7开始,选择器现在默认打开播放列表选项卡(如果我记得,它用于打开相册)...如果设备上没有可以解释空屏幕的播放列表...
答案 4 :(得分:1)
我可以看到歌曲列表并选择歌曲。但我不能在按下" Done"时忽略视图控制器。我已经尝试过PresentViewController,因为不推荐使用Modal控制器。
- (IBAction) showMediaPicker: (id) sender {
picker =
[[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAnyAudio];
picker.delegate = self;
picker.allowsPickingMultipleItems = YES;
picker.prompt = NSLocalizedString (@"AddSongsPrompt", @"Prompt to user to choose some songs to play");
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleDefault animated:YES];
[self.picker removeFromParentViewController];
[self presentViewController:picker animated:YES completion:nil];
// [picker release];
}
// Responds to the user tapping Done after choosing music.
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
[self.picker removeFromParentViewController];
[self dismissViewControllerAnimated:YES completion:nil];
//
[self.delegate updatePlayerQueueWithMediaCollection: mediaItemCollection];
// [self.mediaItemCollectionTable reloadData];
// [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque animated:YES];
}
我也尝试过RemovefromSuperview,似乎没什么用。我在iPhone 6模拟器和带iOS 8.1.3的iPhone 5上测试它。
任何???
答案 5 :(得分:0)
之前我也有同样的问题。但我发现只需要在升级后重启设备。音乐选择器再次出现。