###実現したいこと
現在の画面から目的の画面に戻るという処理の実装について。
最初の画面(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です。
あなたの回答
tips
プレビュー