【Xcode/iOS】UIKitプロジェクトからSwift UIへ移行する方法!
この記事からわかること
- UIKitプロジェクトからSwift UIへ移行させる方法
- 初回起動をStoryboardではなくSwift UIのViewにするには?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
UIKitプロジェクトをSwift UIへ移行する方法
iOSアプリをStoryboardなどを使用したUIKitベースで開発しているプロジェクトをSwift UIへ移行するための手順をまとめていきます。手順は以下の通りでこの手順通りに作業することでSwift UIで定義したViewがアプリ起動時に表示されるようになります。
- AppDelegate.swiftのエントリーポイント(@main)を削除
- Swift UIのエントリーポイントを定義する
- info.plist内を修正
1.AppDelegate.swiftの@mainを削除
まずは「AppDelegate.swift」ファイル内にあるエントリーポイント(@main
)を削除します。iOSアプリではこのエントリーポイントが定義されている場所をアプリ起動時に実行するプログラムとして認識しています。
// @main コメントアウトなどして削除
class AppDelegate: UIResponder, UIApplicationDelegate {
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
}
2.Swift UIのエントリーポイントを定義する
Swift UIをエントリーポイントにするためにApp
を継承した構造体を定義し、@main
を付与しておきます。また@UIApplicationDelegateAdaptor
を使用してアプリのライフサイクルイベント(アプリの起動、バックグラウンド移行など)を検知するクラスを指定します。これはUIKitで元々用意されていた「AppDelegateクラス」を指定します。
import SwiftUI
@main
struct MyProjectNameApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
var body: some Scene {
WindowGroup {
// 最初に呼び出したい任意のSwift UI Viewを指定
RootView()
}
}
}
3.info.plist内を修正
最後に「info.plist」内にある設定項目をいくつか修正します。
- 「Main storyboard file base name」を削除
- 「Enable Multiple Windows」 を YESに変更
- 「Storyboard Name」を削除
これでアプリ起動時にStoryboardのViewではなくエントリーポイントに指定したSwift UIのViewが表示されるようになります。
UIKitのクラスをそのままSwift UIで使用する方法
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。