質問: storyboard!.instantiateViewController(withIdentifier: "FirstView") self.present(next,animated: true, completion: nil) } ``` ボタンをクリックして戻った場合でも、元のタブバーを表示するにはどのようにしたらよいのでしょうか。
回答: あなたが「タブ1の画面1からボタンをクリックし、画面1-2に遷移」するためのコードと、「画面1-2からまたボタンをクリックし、画面1に遷移する」とがほぼ全く同じなのはご自分でもお分かりかと思います。 「画面1-2」には、タブバーは表示されていないはずです。全く同じコードを使えば、(新たな)「画面1」にもタブバーが表示されないと言うのはある意味当たり前だと思いませんか? 「ボタンをクリックして戻った場合」と言う記載がありますが、あなたの「画面1-2から〜」のコードは「画面1と同じデザインの新画面を作成し、その新画面に遷移する」ためのコードであって、元の画面に戻るためのコードにはなっていません。 (`instantiate...`と言うのは「新しい画面を作るのだ」と言う意識を持って読めるようにならないと、これからも色々つまづくことになるでしょう。) `present(_:animated:completion:)`で表示された画面から元の画面に戻るには、`dismiss(animated:completion:)`メソッドを使用します。 画面1-2用のViewController側の`btnNext_click(_:)`メソッド(「戻る」ためのボタン・メソッドにNextとつくのもどうかと思うのでリネームした方が良いですが、storyboardでコネクションを貼ったメソッド名を書き換えると色々不都合も起きうるので、とりあえずそのままにしておきます)を以下のように書き換えて見てください。 ``` @IBAction func btnNext_click(_ sender: Any) { self.dismiss(animated: true, completion: nil) } ``` なお、どうせstoryboardを使うのであれば、次画面への遷移にはsegueを、元画面に戻るにはunwind segueの使用を検討された方が良いでしょう。私的にはunwind segueの方は、かなり使い方は面倒と言っても良いのですが、「unwind segueの使い方」で検索すれば、日本語の良記事が見つかります。