😀

【SwiftUI】UIViewControllerRepresentableについて

2024/10/14に公開

UIViewControllerRepresentableは、SwiftUIでUIViewControllerを統合するためのプロトコルです。
このプロトコルを使うことで、UIKitのUIViewControllerをSwiftUIのViewとして組み込むことができます。
UIKitとSwiftUIという異なるUIフレームワーク間で、データやイベントのやり取りを可能にする橋渡しの役割を持っているということですね。

UIViewControllerRepresentableは、以下のメソッドが必須になります。

必須メソッド

1. makeUIViewController(context:)

UIViewControllerを生成するために使用されるメソッドです。
このメソッドは、SwiftUIのViewが最初に表示される際に一度だけ呼び出されます。

func makeUIViewController(context: Context) -> SomeViewController {
    return SomeViewController()
}

2. updateUIViewController(context:)

既存のUIViewControllerの状態を更新するために使用されるメソッドです。
SwiftUIの状態が変更された場合、このメソッドが呼び出され、対応するUIViewControllerが更新されます。

func updateUIViewController(_ uiViewController: SomeViewController, context: Context) {
    // SwiftUIの状態に基づいてビューコントローラを更新
}

使い所

UIViewControllerRepresentablewは、以下の場面で使います。

  • UIViewControllerをSwiftUIプロジェクトで使いたいとき。
  • 既存のUIKitベースのコンポーネント(カメラ、マップ、WebViewなど)をSwiftUIに組み込みたいとき。

Discussion