質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1014閲覧

特定の場合にrootViewを表示させたくない

takuntakun

総合スコア37

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/03/22 06:46

編集2017/03/22 07:47

###質問
画面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....

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/03/22 07:12

このコードはどのViewControllerに書かれているのでしょうか?
takuntakun

2017/03/22 07:15

修正しました。画面AのNavigationControllerをカスタマイズするクラスを作成し、そこに記述しています。
fuzzball

2017/03/22 07:29

ちょっとViewControllerの構成がよく分からないのですが、NavigationController自体も画面として使っているのでしょうか?(それが画面A?)rootViewControllerには画面BのViewControllerを設定しているのでしょうか?
takuntakun

2017/03/22 07:37

すみません。NavigationControllerは画面として使用していません。そのrootViewControllerには画面Aを設定しています。
fuzzball

2017/03/22 07:43

self.popToRootViewController(animated: true) を消したら都合が悪いのでしょうか?何のために入れているのか分からないのですが。
takuntakun

2017/03/22 07:49

説明不足でした。画面AはTabの一つなのでtab切り替え時にrootViewが表示されるために加えています。また本題に画面構成を追記したのでそちらを見ていただけるとありがたいです。
fuzzball

2017/03/22 07:51

あー、以前回答した記憶がw
fuzzball

2017/03/22 08:14

同じような構成で試してみたのですがNavigationControllerのviewWillAppearが呼ばれないです。
takuntakun

2017/03/22 08:16

以前も回答してもらいました。
guest

回答1

0

ベストアンサー

とりあえずな回答ですが、2つ投げておきます。

案1

画面Dから画面Bに戻るときにNavigationControllerのpop​To​View​Controller(_:​animated:​)を使う。

案2

前回の回答の「TabBarControllerで一括管理」の方で実装する。

投稿2017/03/22 08:25

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takuntakun

2017/03/23 09:24 編集

TabBarで一括管理し、理想通りに動作するようになりました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問