web-dev-qa-db-ja.com

UIViewサブクラスを作成する理由は何ですか?

以前のプロジェクトには多くのUIViewサブクラスがあることに気づきました。そのようなサブクラスの唯一の理由は、大きなビューをカスタムサブビューに分割し、そのサブビューのレイアウトとビューデリゲートプロトコルによるUIButtonsアクションの委任を提供することです。だから私はそれは正しいデザインですか?

2
Denis Mikhaylov

UIViewサブクラスを作成する非常に一般的な理由は、ビューにコアグラフィックスを描画するためにdrawRectメソッドを指定できるようにするためです。別の理由としては、ジェスチャ認識機能に特化した特定のビュー領域内で何かを実行したい場合など、タッチデリゲートを実装することがあります。

オブジェクト(ビューなど)を論理グループに、場合によっては階層にパーティション化することは、変更やバグのスコープを分離するのに役立つため、通常は適切なコーディング手法と見なされます。

4
hotpaw2

ビューが他のビューのコンテナーにすぎない場合は、通常の(サブクラス化されていない)UIViewを使用することをお勧めします。サブクラス化されたビューコントローラーからビューを作成(またはロードしてからnib)します。

例外:UIViewをサブクラス化する場合:

  • カスタム描画用
  • 非標準のタッチ応答(ジェスチャー認識機能以外)
1
Kris Van Bael

初期のiOSでは、ViewControllerはありませんでした。今日、ViewControllerを使用して実行できることのいくつかは、ビューによって行われました。あなたのビュークラスのいくつかはそのようなことをしているようです。

全体として、サブクラスが小さい場合、それはひどいコードのにおいではありません。サブクラスが乱雑になりすぎたら、新しいクラスを発芽させて、集約(MyController)と委任(MyViewDelegate)の責任を管理します。

1
Mark Bernstein