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

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

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

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

Q&A

0回答

423閲覧

swift 2つ前の画面にもスムーズに戻りたい

tomoha729

総合スコア8

Swift

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

0グッド

0クリップ

投稿2017/11/28 10:58

編集2022/01/12 10:55

###実現したいこと
現在の画面から目的の画面に戻るという処理の実装について。

最初の画面(Aとします)から次の画面(B)に遷移したあと、さらにその画面に設置した"表示切替"ボタンを押せば次の画面(B')に切り替わり、そこで"表示切替"ボタンを押せば画面Bに戻るというUIを用意しています。
このB及びB'の画面にさらに"戻る"ボタンを設置し、それを押せば画面Aにスムーズに戻るようにしたいです。
現在は画面B'であれば2度戻るという処理をしていますが、戻る途中で画面BのUIが一瞬見えるので気持ち悪いです。

dismiss()を使うのではなくSegueやpresent()で画面Aに遷移するという方法も考えましたが、都合上適さないため*できれば避けたいです。
1つ前の画面を経由せずに2つ前の画面に直接戻る方法はありますか?

*画面Aには元となるビューにユーザーの操作によって異なるblur効果をかけたビューを重ねて表示しており、再び2つのビューを用意するのは処理コスト的にも避けたいため

###現在のソースコード
AからBへ遷移する処理。BからB'への遷移は同様にUIStoryboard()のnameを"screenB_2"としています。

swift

1 2 @IBAction func transition(_ sender: Any) { 3 let storyboard: UIStoryboard = UIStoryboard(name: "screenB_1", bundle: nil) 4 let nextView = storyboard.instantiateInitialViewController() 5 self.present(nextView, animated: false, completion: nil) 6 }

BからAへ戻る処理。

swift

1 @IBAction func backToA(_ sender: Any) { 2 self.dismiss(animated: false, completion: nil) 3 }

B'からAへ戻る処理。

swift

1 @IBAction func backToA(_ sender: Any) { 2 self.presentingViewController?.presentingViewController?.dismiss(animated: false, completion: nil) 3 }

###補足情報
Swift4です。

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

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

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

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

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

fuzzball

2017/11/29 00:31

AからB、BからB'へ遷移するコードを書いて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問