###質問
画面A→画面B→画面C→画面D
と遷移していきます。
画面Dから画面Bに戻りたいのでunwindを使って遷移させようとしました。
しかし
swift
1class ViewANavigationController: UINavigationController { 2 //画面が表示される時に呼び出される 3 override func viewWillAppear(_ animated: Bool) { 4 super.viewWillAppear(animated) 5 //ルート画面を表示 6 self.popToRootViewController(animated: true) 7 } 8} 9
※画面AのNavigationControllerをカスタマイズするためのclass
このようにして画面AをrootViewとして設定しておりunwindを使って画面Bに戻ると画面Aが表示されてしまいます。
どのようにすれば特定の場合だけ画面Dから画面Bに戻らせることができるでしょうか?
####追記
※画面構成
Tab
┠NavigationController━画面A━画面B━画面C━画面D
┠NavigationCOntroller━画面2....
┗NavigationController━画面3....
このコードはどのViewControllerに書かれているのでしょうか?
修正しました。画面AのNavigationControllerをカスタマイズするクラスを作成し、そこに記述しています。
ちょっとViewControllerの構成がよく分からないのですが、NavigationController自体も画面として使っているのでしょうか?(それが画面A?)rootViewControllerには画面BのViewControllerを設定しているのでしょうか?
すみません。NavigationControllerは画面として使用していません。そのrootViewControllerには画面Aを設定しています。
self.popToRootViewController(animated: true) を消したら都合が悪いのでしょうか?何のために入れているのか分からないのですが。
説明不足でした。画面AはTabの一つなのでtab切り替え時にrootViewが表示されるために加えています。また本題に画面構成を追記したのでそちらを見ていただけるとありがたいです。
あー、以前回答した記憶がw
同じような構成で試してみたのですがNavigationControllerのviewWillAppearが呼ばれないです。
以前も回答してもらいました。
回答1件
あなたの回答
tips
プレビュー