我在解雇两个modalviewcontrollers时遇到了一个奇怪的问题。
我正在做的是我有一个viewControllers A和B.我在A上呈现modalviewController B.然后On BI在B.上呈现MPMediaPickerController
现在我的问题是点击MPMediaPickerController中的Done按钮后它的委托方法是打电话。我已经实现了以下代码来关闭MPMediaPickerController
和控制器B,以便我们可以直接转到控制器A.
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES];
}
相同的代码适用于ViewControllers A,B和C,但如果第三个代码是MPMediaPickerController
任何想法或建议都非常有用。
答案 0 :(得分:2)
为什么使用dismissModalViewControllerAnimated
方法?它已弃用,请改用dismissViewControllerAnimated
。
检查此代码:
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[self dismissViewControllerAnimated:YES completion:^{
[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}];
}
答案 1 :(得分:1)
每当您从控制器呈现MPMediaPickerController时,您必须将其委托设置为呈现控制器。因为因为委托方法在呈现视图控制器内,所以你必须调用dismissModalViewControllerAnimated而不是你正在做的任何事情。我只是将bool参数传递给NO,因为每当你试图同时解除多个视图控制器时,iOS会有不平衡的转换调用,这可能会阻止另一个调用。所以我只是在没有任何动画的情况下解散了MPMediaPickerController,并且使用动画呈现了视图控制器。
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[self dismissModalViewControllerAnimated:NO];
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
答案 2 :(得分:0)
你试过以下代码吗?
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection
{
[mediaPicker dismissModalViewControllerAnimated:NO];
[self dismissModalViewControllerAnimated:YES];
}
谢谢!