Swift:Storyboardを使わないで、コーディングのみで画面を立ち上げる(SceneDelegate使用しない)
今回はStoryboard無しで、コーディングで画面を立ち上げていきたいと思います。
ここではいつでも立ち上げられるように備忘録として残していきます。
■Storyboard無しのメリット/デメリット
*少し長くなるので、やり方をすぐに知りたい方は飛ばしてください。
個人的に感じたことを書いていこうと思います。機能性に関することはわかりませんので、もし詳しく知りたい方は他の方の記事等をお読みください。
【メリット】
・分散しない、統一性がある。
Storyboardを使用しているとUI部品など(Button、Label、TextField、ImageView等)はOutlet接続してプロパティ宣言はできるものの、その中の設定はStoryboardでされており、ソースコード(エディタエリア)からは把握できないので、Storyboardのユーティリティエリアを確認する手間があります。
設定の例:ボタンの色、ラベルの文字列の色、AutoLayoutなど
コーディングのみだと、例えば「名前と色が違うけど、あとは同じ設定のボタン」とうような場合、extensionやクラスで骨格だけ作成して使い回すことができます。また初心者だと難しく見える「引数」の勉強にもなります。
またAutoLayoutは一度骨格を作成すれば数値を入れるだけなので、他のXcodeプロジェクトでも使い回すことができ、非常に便利だと感じました。
僕自身StoryboardでのAutoLayout設定は正直苦手でしたが、コーディングでスムーズに配置設定ができるようになりました。
【デメリット】
・パッと見でわからない。
Storyboardがあれば、どんなアプリなのか?の全体感が直ぐに把握できるのですが、Storyboardが無いと、ソースコードを読んでから大凡の想像をしていく必要があります。
■画面の立ち上げ
それではStoryboard無しでの立ち上げをしてきます。
まず使わないMain.Storyboardを削除します。
今回はSceneDelegateも使用しないので、全てコメントアウトします。
続いて、AppDelegateを編集します。
下記画像の赤線と四角い赤線内の記述をします。
*window?.rootViewController = 「起動して最初に表示させたいViewControllerのインスタンス」を記述することで画面表示させることができます。
*window?.makeKeyAndVisible()この記述が無いと起動しても画面は真っ暗のままです。
そして丸く囲んである赤線内は使用しないので、コメントアウトします。
次に、「TERGETS」の「Main Interface」に記載されている「Main」を削除します。これがあるとMain.Storyboadから始める設定になってしまいますので。
残るは、「info.plist」の「Application Scene Manifest」を削除します。
この中にある「Storyboard Name」を削除するだけでも大丈夫です。
あとはViewControllerをお好みで編集します。今回は背景色を設定します。
これでシミュレータ実行すると無事、画面が表示されました!
とりあえず画面を立ち上げることができました。😃
また今回はSceneDelegateをコメントアウトしましたが、次回ではSceneDelegate に記述をして画面を立ち上げる方法を書いていきたいと思います。
理由としましては、Xcodeプロジェクト内で扱う内容によって今回の方法で立ち上がらない場合もあったためです。😅
以上、ここまで見ていただきありがとうございました!