2

アプリケーションで UISegue を使用して、アプリケーション内のビューコントローラー間を自動的に遷移させています。私はそれらをAとBと呼びます。

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


2 回目の試みとして、ボタンを UISegue にマップしてビュー コントローラー A に戻そうとしました
が、これは新しい ViewController を作成するだけです。

B viewcontroller回避策として、回避策としてUIStoryboard からを取得して呼び出すことになりました[A.navigationController pushViewController:B]

その時点で、呼び出し[B.navigationController popViewController]は期待どおりに機能しました。

これは間違っているようです。ストーリーボードのセグエから、以前のView Controllerに戻るにはどうすればよいですか?

4

1 に答える 1

2

A および B コントローラーのクラス (UIViewController、UITableViewController、または UINavigationController) についてはわかりませんが、次のパターンに従えば動作するはずです。

  • 空のストーリーボードに UINavigationController を挿入します。これにより、ストーリーボードに 2 つのウィンドウが表示され、矢印 (セグエ) でリンクされます。右側がコントローラー A です。

  • A では、ボタンを追加するとします。ボタンは B をナビゲーション スタックにプッシュします。

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

UIViewController (A) のみを使用して B をプッシュする場合、ポップを処理するための navigationController はありません。

その助けを願っています。

于 2012-01-18T16:13:54.857 に答える