0

私はiOSプログラミングに比較的慣れておらず、iPad用のレシピベースのアプリを作成しています。私はたくさんの答えを見回しましたが、私の問題を解決できないようですので、私のアプリがどのようにレイアウトされているかを説明していません。

ナビゲーションコントローラー->ViewController-Modal segue-> PreviewViewController -modal segue-> Navigation Controller-> RecipeViewController

RecipeViewController内に、押すと「ホーム」画面に戻るボタンがあります。これらの目的では、「ViewController」です。

「RecipeViewController」のボタンアクションのコードは次のとおりです。

- (IBAction)homeB:(id)sender {
ViewController* viewController = [[ViewController alloc]init];
[self.navigationController pushViewController:viewController animated:YES];
}

ただし、このボタンを押すと、ViewControllerが表示されますが、画面がグレー表示され、画面を操作できません。まだ評判が悪いので画面の画像を投稿できませんが、できれば更新します。

ストーリーボードのボタンと「ViewController」の間にセグエを接続し、ボタンが押されたときにセグエをアクティブにするなど、他の表示方法を試しました。しかし、ホーム画面を再割り当てして初期化する必要があるため、これはコードの他の部分を台無しにします。対話できないグレー表示の画面が表示される理由について、助けていただければ幸いです。

また、もう少し注意してください:

self.navigationController

nilを返さないので表示され、ボタンが押されてもエラーは表示されません。

ありがとう

4

3 に答える 3

2

あなたが本当にセグエをしているのなら、これは絵コンテで作られたと思います。その場合は、アンワインドセグエを使用してViewControllerに戻る必要があります。これを行うには、ViewControllerに次のようなIBActionを追加します。

-(IBAction)comingBackFromRecipe:(UIStoryboardSegue*)sender {
    NSLog(@"I'm back");
}

重要な点は、送信者のタイプがUIStoryboardSegueであるということです。次に、IBのRecipeViewControllerで、ボタンからコントローラーの下部にある緑色の「終了」アイコンへのドラッグを制御します。手放すと、ViewControllerで作成したメソッドが表示されます-それに接続します。これにより、最初に使用したのと同じViewControllerのインスタンスに戻ります。

于 2013-02-11T23:23:58.093 に答える
0

皆さんの回答に感謝しますが、私は自分の問題を理解しました。私の構造は間違っていて、そこからどこにもプッシュしていなかったので、レシピビューコントローラー用に別のナビゲーションコントローラーを用意する必要がないことに気づきました。したがって、他の誰かが同様の問題を抱えている場合、私の構造は次のようになります。

ナビゲーションコントローラー->ビューコントローラー-モーダルセグエ->PreviewViewController-モーダルセグエ->RecipeViewController

PreviewViewControllerとRecipeViewControllerの間のナビゲーションコントローラーを削除しました。これは、それらがすべてモーダルビューコントローラーであることを意味します。したがって、RecipeViewControllerから「ViewController」であるホーム画面に戻るには、次のコードを使用してモーダルビューの階層を閉じる必要があります。

UIViewController * parent = self.presentingViewController;
[parent.presentingViewController dismissViewControllerAnimated:YES completion:nil];

PreviewViewControllerとRecipeViewControllerの両方が却下されるように、2つのステージに戻りました。

とにかくみんなの助けに感謝します。

于 2013-02-13T12:29:11.170 に答える
0

スクリーンショットを見ずに見分けるのは難しいですが、私が理解していることから、ホーム画面に戻りたい場合は、新しいView Controllerをプッシュするべきではありません(本当にスタックに追加したい場合を除きますか?)

「ホーム」画面に戻るには、次のことを試してください。

[self.navigationController popToViewController:viewController animated:YES];

または、ホーム画面がルートの場合は、次を使用してください。

[self.navigationController popToRootViewControllerAnimated:YES];
于 2013-02-11T22:25:38.570 に答える