2016-04-15 5 views
0

私は、1つのナビゲーションコントローラに複数のビューコントローラを埋め込んでいます。 どのようにすれば、以前のvcをvcからさらに表示することができますか?既存のビューコントローラをプログラムで表示する

let vc = self.storyboard?.instantiateViewControllerWithIdentifier("MenuViewController") as! MenuViewController 
     self.presentViewController(vc, animated: true, completion: nil) 

これは機能せず、次のエラーを返します: これは私が試したもので、すべての回でアンラップ

fatal error: unexpectedly found nil while unwrapping an Optional value 

enter image description here

+0

'' MenuViewController "は間違いなく正しいですか? – zcui93

+1

人々はあなたのエラーを修正するために答えていますが、あなたのエラーを修正することは、これを行うことが新しいView Controllerを作成して提示し、既存のコントローラに戻らないという事実を変更することはありません。巻き戻しセグを使用するか、ナビゲーションコントローラのpop/dismissメソッドのいずれかを使用して戻る必要があります。 – dan

+0

ナビゲーションコントローラーのビューコントローラースタックを巻き戻して、以前のビューコントローラー(アンワインドセグ)に戻したいのですか、または新しいビューコントローラーをナビゲーションコントローラー(コードの意味)にプッシュしますか? –

答えて

-1

避け強制を!!

これでアプリがクラッシュすることはなくなりますが、解決策全体が問題になることはありません。 MenuViewController識別子が間違っているか、ストーリーボードがnilです。

+0

に戻りたいと思っています。 MenuViewController'、Xcodeは 'as 'を' as!'に変更するように頼んだ。 –

+0

ifとcurly braceを忘れないでください。最初にストーリーボードのラップを解除する必要があるかもしれません。 –

+0

if文を追加し、コードがそれを入力していることを確認しましたが、それでも同じエラーが発生します。だから私には 'self.presentViewController(vc、animated:true、completion:nil)'の問題がありますか? –

0

"MenuViewController"のスペルを正しく示していると、表示コントローラにストーリーボード識別子を正しく追加していない可能性があります。

あなたのストーリーボードに移動し、関連するビューコントローラをクリックし、アイデンティティインスペクタをクリックし、ストーリーボードIDボックスに「MenuViewController」と入力します。

また、ベストプラクティスのためにコードをAndrew'sに変更してください。

+0

質問の編集を忘れましたか? – Caleb

+0

おっと、私はしばらく開いていました。 if letを使うとどうなりますか?あなたは最近プロジェクトをきれいにしましたか? –

+0

また、巻き戻しを試したことがありますか?これはフローに適合しませんか? –

0

私はあなたが上記のコードで何を達成しようとしているのかよく分かりませんが、前のビューコントローラに戻ってみたい場合は、デリゲートを使って提示VCにその作業と提示しているビューコントローラは、ナビゲーションコントローラを使用してそれを解除する必要があります。 View Controllerは、どのように表示されたのかわからないので自分自身を却下しないようにすべきです。どのように提示されたかを知っているので、常に(少なくとも99%)プレゼンターになるべきです。あなたが使用してナビゲーションコントローラにVCを解任することができ、アカウントにこれを取る

self.navigationController?.popViewControllerAnimated(true)

または

self.navigationController?.popToViewController(<#MyViewController Reference#>, animated: true)

関連する問題