2

だから私はストーリーボードを使用して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スタイルであり、そのセグエスタイルはのボタンにリンクされたポップアップRecipeViewControllerです。

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

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

宛先のView ControllerがUIPopoverController

于 2013-02-21T11:56:39.917 に答える
0

presentViewController:animated:completion:代わりに試しましたperformSegueWithIdentifier:か?

于 2013-02-21T11:37:51.120 に答える