【SwiftUI】App Delegateとは?実装方法と使い方

この記事からわかること

  • SwiftApp Delegateとは?
  • Swift UI使用する方法
  • UIKitAppDelegate.swiftファイルとは?
  • @UIApplicationDelegateAdaptorの使い方

index

[open]

\ アプリをリリースしました /

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

iOSアプリ起動時に処理を実行させることできるApp DelegateをSwift UIで実装する方法をまとめていきます。

App Delegateとは?

App DelegateとはiOSアプリ起動時など特定のライフサイクルの中で呼ばれる処理のことを指します。

【Swift】delegate(デリゲート)とは?使い方とメリット

UIKitフレームワークではプロジェクトを作成した場合「AppDelegate.swift」ファイルがデフォルトで作成されています。

UIKitで作成されるファイル群

├── Swiftプロジェクト
│   ├── プロジェクト名
│        ├──  AppDelegate.swift
│        ├──  ViewController.swift
│        ├──  Main.storyboard
│        ├──  Assets.xcassets
│        ├──  LaunchScreen.storyboard
│        └──  info.plist
│   └── プロジェクト名.xcodeproj

そのファイルの中にライフサイクルイベントを管理するクラスが生成されており、アプリ起動や停止させた際に任意の処理を実行させるためのメソッドが用意されています。

Swift UIにはAppDelegate.swift がない

しかしSwift UIを使用する場合は「AppDelegate.swift」は作成されません。代わりに「プロジェクト名App.swift」ファイルが生成されます。


import SwiftUI

@main
struct HelloWorldApp: App {    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Swift UIにApp Delegateを実装する方法

Swift UIにUIKitの時に使用していたようなApp Delegateを実装するには「プロジェクト名App.swift」内にコードを記述していきます。

Swift UIではUIKitのApp Delegate機能を実装するために@UIApplicationDelegateAdaptorと呼ばれるプロパティラッパーが用意されています。まずはこれを「プロジェクト名App.swift」ファイルに追加していきます。

import SwiftUI

@main
struct HelloWorldApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

この時点ではappDelegateクラスが未定義のためエラーが出ますが気にせず進めてください。

クラスの作成

続いてライフサイクルを管理するためのデリゲートメソッドを保持するクラスを作成します。このクラスにはUIApplicationDelegateプロトコルへの準拠が必要になります。新規でファイルを作成し以下の内容を記述します。


import Foundation

import UIKit

class AppDelegate: NSObject, UIApplicationDelegate {

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
      print("アプリが起動したよ")
      return true
  }

}

これでSwift UIでもアプリが起動した際などライフサイクルイベント発生時に任意の処理を実行させることができるようになります。

アプリが閉じたときに実行させる

AppDelegateでアプリが閉じたときに実行させるにはapplicationWillTerminateメソッドを呼び出します。

class AppDelegate:NSObject,UIApplicationDelegate{
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        print("アプリが起動したよ")
        return true
    }

    func applicationWillTerminate(_ application: UIApplication) {
        print("アプリを終了させたよ")
    }
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

私がSwift UI学習に使用した参考書

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

\ アプリをリリースしました /

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

フレームワーク:Laravel/Vue.js

作成の流れQiita「Laravel×Vue.jsを使って初めてWebアプリを自作しました!」

感想:初めて作成したWebアプリです!メールアドレスでの会員登録や質問投稿、回答やコメント、いいねやフォローなどSNSに近い機能を実装してみました。レビューや修正すべきポイントなどを教えていただけると嬉しいです!

New Article

index