質問: Int(time) % 60 return String(format: "%02d:%02d:%02d", hour, minutes, second) } } ``` ### 試したこと 遷移のコードの場所を変えてみたり、classの名前を確認しました。 いろいろ調べてみたのですが、ボタンで遷移するやり方しか書いておらず、条件で遷移するやり方がわかりませんでした。
回答: 条件分岐の考え方は間違っていないと思います。 画面が表示されないのは ``` let timerPoint = storyboard?.instantiateViewController(withIdentifier: "toDViewController") as! DViewController timerPoint.getPoint = getPoint ``` このように、次の ViewController をインスタンス化し、値を代入している一方、実際に「画面として表示」する部分が抜けているためです。 この手順であれば、一般的には ``` present(timerPoint, animated: ture, completion: nil) ``` といった感じで上記のメソッドを使い、インスタンス化した ViewController を実際に表示する処理が必要となります。 * present(_:animated:completion:) 初回のご質問でも触れましたが、次の画面を表示する方法はいくつかあるのですが、その組み合わせは概ね決まっています。 * Segue を使う場合 1. パーツなどの UI 部品から Segue を張る(ボタンなどを押したタイミングで自動で遷移) 2. ViewController から Segue を張る場合には、performSegue を使う(任意のタイミングで遷移) * Segue を使わない場合 1. instantinateViewController などで次画面のインスタンスを作る -- present でモーダル表示する -- navigationController などを使う場合には pushViewController などを使う 2. 直接次画面のインスタンスを作る -- 次画面のクラス内で表示のための初期設定を記述する(いくつか方法がある) -- 1. と同じく present や pushViewController などを使って表示する といった具合です。 RumiaCamellia さんがどのような教材や書籍をご利用か分かりませんが、この前のご質問から考えると * instantinateViewController で次画面のインスタンスを作る * present で表示する の流れを抑えていただくのが一番いいかと思います。