2015-02-01 2 views
2

Я могу просмотреть список песен и выбрать песни. Но я не могу отклонить контроллер просмотра при нажатии «Готово». Я пробовал PresentViewController, поскольку контроллер Modal устарел.Невозможно отменить MPMediaPickerController на iOS 8.1.3

- (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 и iPhone 5 с iOS 8.1.3.

Кто-нибудь ???

ответ

0

Я проверил ваш код и удалил некоторые вызовы removeFromParentViewController:, потому что я не думаю, что они необходимы.

- (IBAction)showMediaPicker:(id)sender { 
    MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio]; 

    picker.delegate = self; 
    picker.allowsPickingMultipleItems = YES; 
    picker.prompt = @"Some Prompt"; 

    [self presentViewController:picker animated:YES completion:nil]; 
} 

// mediaPicker:didPickMediaItems: will be called if at least one song was selected 
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 
    [mediaPicker dismissViewControllerAnimated:YES completion:nil]; 
} 

// mediaPickerDidCancel: will be called if no songs were selected 
- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker { 
    [mediaPicker dismissViewControllerAnimated:YES completion:nil]; 
} 

Убедитесь, что .h -file включает протокол MPMediaPickerControllerDelegate.

Смежные вопросы