解雇两个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/