所以我正在使用故事板创建一个基于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}中的按钮}}
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
UIPopoverController *popOver = (UIPopoverController *)self.presentedViewController;
[popOver dismissPopoverAnimated:YES];
如果目标视图控制器是UIPopoverController
答案 1 :(得分:0)
您是否尝试过presentViewController:animated:completion:
而不是performSegueWithIdentifier:
?