关闭通过Popup显示的View Controller

时间:2013-02-21 11:31:09

标签: ios xcode ipad popup uipopovercontroller

所以我正在使用故事板创建一个基于ipad配方的应用程序。只是为了让您了解我的程序结构,这里是View控制器的流程:

  

ViewController --Modally - > PreviewViewController --Modally - >   RecipeViewController --Popup - > IngredientsViewController

所有这些都是在故事板中完成的。我创建了IngredientsViewController并将其链接到RecipeViewController以显示为弹出窗口,这样可以正常工作。但是我希望能够以编程方式解除IngredientsViewController(因为我已经实现了语音命令功能)。问题是我似乎无法访问IngredientsViewController来解雇它。 (我不能发布任何图片)。

我使用以下代码以编程方式显示IngredientsViewController(来自RecipeViewController内):

[self performSegueWithIdentifier:@"ingr" sender:nil];

哪个可以正常显示弹出窗口,但我不能忽略它。我试图通过视图控制器的层次结构访问它,但似乎无法找到它,我会认为它将位于堆栈的顶部,但显然不是?我尝试过这样的事情:

[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];

同样,这是从RecipeViewController内部调用的。但这只是驳回了弹出窗口所呈现的RecipeViewController而不是IngredientsViewController

要明确IngredientsViewController不是UIPopoverController,它是在故事板中创建的普通viewController,其segue样式弹出窗口链接到{{1}中的按钮}}

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

UIPopoverController *popOver = (UIPopoverController *)self.presentedViewController;
[popOver dismissPopoverAnimated:YES];

如果目标视图控制器是UIPopoverController

,这应该可以解决问题

答案 1 :(得分:0)

您是否尝试过presentViewController:animated:completion:而不是performSegueWithIdentifier: