👽

【Swift UI】Swift UIでViewControllerを呼び出す。

2024/01/07に公開

Swift UIでViewControllerを呼び出す方法

今回は自分への書き留めようなので、分かりにくいかもです。

UIViewControllerRepresentable

まず、下記コードを見てください。
struct(構造体)型にUIViewControllerRepresentableを準拠させています。

struct makeViewController: UIViewControllerRepresentable  {
    func makeUIViewController(context: Context) -> UIViewController {
         // 指定のUIViewControllerを作成する
         let myViewController: UIViewController = CreateUserViewController()
         return myViewController
     }

     // UIViewControllerを更新するメソッド
     func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
         // UIViewControllerを更新したときの処理
     }
}

makeUIViewController

UIViewControllerRepresentableを準拠させると「makeUIViewController」を記述する必要が出ます。
makeUIViewControllerは、ビューコントローラーオブジェクトを作成し、UIKitビューコントローラーの初期状態を返します。
UIViewControllerRepresentableを準拠させたstructを呼び出した際にmakeUIViewControllerは一度だけ呼び出されます。

updateUIViewController

パラメータにビューコントローラーを受け取っており、SwiftUIはビューコントローラーに影響を与える変更が起きたときに「updateUIViewController」を呼び出し、もう一つのパラメータであるcontextの情報と一致するようにビューコントローラーを変更する。

## 呼び出し方
呼び出し方の一例ですが、書いておきます。

var body: some Scene {
  makeViewController()
 }

Discussion