2012-01-16 6 views
2

自分のアプリケーションでUISegueを使用しているので、アプリケーションのViewController間を自動的に切り替えることができます。UIStoryboard popViewController

期待通りに機能しましたが、BからAにポップバックしたいときは、 [self.navigationController popViewController]を呼び出しようとしましたが、BのnavigationControllerプロパティはnullを報告します。


は、第二の試みとして、私は、しかし、これはちょうど新しいのViewControllerを作成し、バックビューコントローラA.
にUISegueに、ボタンをマップしようとしました。回避策として

、私は予想通り[B.navigationController popViewController]が働いて呼び出し、周りの仕事はUIStoryboardからを取得するためにあったようにやって、どの時点で[A.navigationController pushViewController:B]

を呼ぶことになりました。

これは間違っているようですが、ストーリーボードから以前のView Controllerに戻すにはどうしたらいいですか?

+1

"プッシュ"タイプのセグはありますか? – barley

+0

これはプッシュタイプのえっちです – Onedayitwillmake

答えて

2

私はあなたのAとBのコントローラ(UIViewController、UITableViewControllerまたはUINavigationControllerのいずれか)のクラスについてはわかりませんが、次のパターンに従えばうまくいくはずです。

  • 空のストーリーボードに、UINavigationControllerを挿入します。これは、ストーリーボードに2つのウィンドウを持ち、矢印(セグエ)でリンクしています。右のものはコントローラAでなければなりません。

  • では、ボタンを追加します。ボタンはBをナビゲーションスタックに押し込みます。

  • 次に、2番目のコントローラBを追加し、コントローラAのボタンからコントローラBにドラッグし、ポップしたメニューから「プッシュ」を選択します。

UIViewController(A)とプッシュBのみを使用する場合は、ポッピングを処理するnavigationControllerはありません。

願っています。

+1

UINavigationControllerをドラッグして、UIViewControllerを既に持っている場合は、その設定を取り消す必要はありません。代わりに、UIViewControllerを選択し、エディタメニューに移動し、埋め込みを選択し、UINavigationViewControllerを選択すると、これですべてが設定されます。 –

+0

@ Scott Sherwoodそれは素晴らしいトリックです。私はそれを知らなかった。しかし1つの質問。ストーリーボードでこれを行うと、Xcodeは自動的にviewControllerをnavControllerとviewControllerに変え、segueにリンクします。それは基本的に同じものではありませんか? – Canopus

+0

はい、ちょうどちょっとしたショートカットとまったく同じです。 navControllerとviewControllerの間のリンクは関係と呼ばれ、Segueとは少し異なりますが、原則としてあなたが残していることはあなたが提案したものと同じです。 –

関連する問題