ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

UIViewとUIViewControllerの役割分担

はじめに

UIViewとUIViewControllerの役割分担は難しいと思います。全部UIViewControllerに仕事させると UIViewの再利用性が著しく下がったり、UIViewに全部仕事を任せると連携が複雑になったり。

まあ、自分視点でざっと整理してみます。

UIViewのお仕事

  • 簡単なイベントを受けてモデルを操作。
  • モデルの変更結果を受けて描画。
  • 自分で処理できない、判断できない処理は委譲する。

UIViewControllerのお仕事

  • UIViewとモデルをくっつける。
  • (主に)UIViewからの委譲されたメッセージを処理する。
  • 回転、閉じる等、画面全体のイベントを処理する。
  • 他のViewControllerとの連携

モデルの変更をどっちで行なうかについて?

  • 単なるデータバインディングならUIView
  • 画面全体のイベントならUIViewController
  • (子UIViewControllerの場合)自身管理下の主要View間の調整が発生するものはUIViewController UIVIewControllerの連携が必要な物はUIViewControllerかなと。

図で書くとこんな感じ(作業中)。