iOSアプリはStoryboardを使わずにコードだけで作ることにした
swiftでiOSアプリ開発の勉強をしているのだけど、Storyboardを使うのをやめて極力コードだけで作ることにしました。
どうして?
練習のために簡単で小さなアプリをたくさん作っていると、前に作ったアプリから流用したい部分が出てきます。
そこで新しいプロジェクトを作ってコピーできるところだけ部分的にコピーしたいのだけど、Storyboardを使ってレイアウトしたりしているとソースを部分的にコピーして貼り付けるだけではアプリが動かず、StoryboardへのUIの配置やソースファイルへの接続はやり直す必要が出てくる。
Storyboardは視覚的にレイアウトできて最初のうちはわかりやすくてよかったのだけど、新しいプロジェクトを作るたびに同じ作業の繰り返しで「めんどくさい!」と思うように。。。
それで、Storyboardを使わずコードだけで作ればソースのコピーだけで流用できると考えるようになりました。
やり方
好きなプロジェクト名でXcodeでiOSのSingle View Appを作成します。
プロジェクトの設定
Deployment Infoのmain Interfaceに入力されている main を削除して空欄にします。
main.sotryboardファイルの削除
プロジェクトナビゲータにあるMain.storyboardを削除します。
Do you want to move “Main.storyboard” to the Trash, or only remove the reference to it?と聞いてくるので”Move to Trash”を選択しましょう。
AppDelegateファイルの編集
アプリを開いた時に表示する画面の設定を削除したため、新たにAppDelegateファイルで指定します。
3行追加してViewControllerのインスタンスをrootViewに指定して表示するようにします。
window = UIWindow(frame: UIScreen.main.bounds)
//windowのrootViewControllerにViewControllerのインスタンスを指定する
window?.rootViewController = ViewController()
//windowを見えるようにする
window?.makeKeyAndVisible()
AppDelegate.swift全体では下記のようになります。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//デバイスのスクリーンサイズでwindowを生成する
window = UIWindow(frame: UIScreen.main.bounds)
//windowのrootViewControllerにViewControllerのインスタンスを指定する
window?.rootViewController = ViewController()
//windowを見えるようにする
window?.makeKeyAndVisible()
return true
}
func applicationWillResignActive(_ application: UIApplication) {
}
func applicationDidEnterBackground(_ application: UIApplication) {
}
func applicationWillEnterForeground(_ application: UIApplication) {
}
func applicationDidBecomeActive(_ application: UIApplication) {
}
func applicationWillTerminate(_ application: UIApplication) {
}
}
ビルド
これで正常にビルドできるようになりますが、ViewContorollerクラスに何も設定していないため真っ黒な画面です。
最後に
これでStoryboardを使わずにコードだけでアプリを作っていく下準備ができました!
この方法でアプリを作っておけばコードのコピペだけでviewやボタンを別のプロジェクトに移植できて便利です。
Stroyboardを使わずにviewやボタンを画面に配置する方法はまた別の記事で紹介したいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません