MPMediaPickerController

MPMediaPickerController

解雇两个modalviewcontrollers时遇到一个奇怪的问题。

我正在做的是我有一个viewControllers A和B。我在A上显示modalviewControllerB。然后在B上我在B上显示MPMediaPickerController。现在我的问题是在MPMediaPickerController中单击“完成”按钮后,它的委托方法正在调用。我已经实现了以下代码以关闭MPMediaPickerController和控制器B,以便我们可以直接转到控制器A。

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
    [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES];
}


相同的代码适用于ViewController A,B和C,但如果第三个是MPMediaPickerController则不起作用

任何想法或建议都非常有帮助。

最佳答案

每当您从控制器呈现MPMediaPickerController时,都必须将其代理设置为呈现控制器。由于委托方法在呈现的视图控制器内部,因此必须调用dismissModalViewControllerAnimated而不是正在执行的操作。我只是将bool参数传递给NO,因为每当您尝试同时关闭一个以上的viewcontroller时,iOS就会出现不平衡的过渡调用,这可能会阻止另一个调用。因此,我只是不使用任何动画就关闭了MPMediaPickerController,而是使用动画来显示视图控制器。

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
    [self dismissModalViewControllerAnimated:NO];
    [self.presentingViewController dismissModalViewControllerAnimated:YES];
}

关于ios - 同时关闭两个当前的ModalViewControllers(MPMediaPickerController和UIViewController),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22557428/

10-10 20:47