アプリケーションの初期化処理
アプリの起動準備が終わった際に呼び出されるメソッドについてまとめる
使えそうな場面
・初回表示画面となるStoryBoardの切り替え処理
・アプリの初回起動時にのみ処理を行いたい場合
・他のアプリから呼び出された際の処理
メソッド
・AppDelegateクラス。
・Xcodeで新規プロジェクトを作成した際に、自動で記述される
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 初期起動時にさせたい処理を記述 }
引数について
・application :UIApplicationオブジェクト
・launchOptions : オプション。他のアプリケーションから呼び出した場合、辞書型として渡される。例)アプリが起動したURLスキーマなど。
実例:初回表示画面となるStoryBoardの切り替え処理
【サンプルソース】
https://github.com/satoNobu/study_swift/commit/125bff373a6f8e09b6e999b000d6bd81936a85cb
- storybordとそれに紐づく、ViewControllerを別途作成(Sub2として作成)
- MainStroybordと1)で作成したstorybordを定義
「一部抜粋」
// StoryBoardから初回表示画面となるビューコントローラーを取得 let stroyboard = UIStoryboard(name: "Main", bundle: nil) let controller = stroyboard.instantiateInitialViewController() let subStroyboard = UIStoryboard(name: "Sub2", bundle: nil) let subController = subStroyboard.instantiateInitialViewController()
- window?.rootViewControllerで初期化画面を切り替え
(ベタで直接指定しているが実際には、UserDefaultのフラグやカウントで出し分けする使い方が便利そう)
// ルートビューコントローラーを指定 // window?.rootViewController = controller // ここのコメントアウトを消して、下をコメントすると、Mainが初回表示される。起動すると何も表示されない window?.rootViewController = subController // ここで無理やりsub2を初回表示させてる。起動すると「Sub2画面だよ」と文字が表示される
メソッドの記述例
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. // StoryBoardから初回表示画面となるビューコントローラーを取得 let stroyboard = UIStoryboard(name: "Main", bundle: nil) let controller = stroyboard.instantiateInitialViewController() let subStroyboard = UIStoryboard(name: "Sub2", bundle: nil) let subController = subStroyboard.instantiateInitialViewController() window = UIWindow(frame: UIScreen.main.bounds) // ルートビューコントローラーを指定 // window?.rootViewController = controller window?.rootViewController = subController // ウィンドウを表示 window?.makeKeyAndVisible() return true }
MainStoryboardだと何も表示されないが、
window?.rootViewControllerをsubControllerに変更すると「Sub2画面だよ」と表示される