2011-01-07 7 views
5

現時点では、私のUIのほとんどはプログラムで設定しました。 (さらにニブを使用して)画面に属しているビューを配置する2つの方法があります。ビューコントローラでUIVIewまたはUIViewControllerの複雑なビュー設定? (デザイン決定)

  • 、すべてのビューを管理する(!それはビューコントローラです)
  • カスタムUIViewのサブクラスを作りますコントローラーにそのワイヤーを接続するだけです。

私は両方がうまくいくことは知っていますが、どの状況でどのソリューションを選択しましたか?

また、最初の変更では、viewDidLoadで設定を行い、ビューをself.viewに追加するか、コンテナビューを作成してloadView内のすべてのビューを追加するオプションがあります。ここに良いアドバイスもありがとうございます。

コントローラのビューとして完全なビューを設定すると、2番目の変種はペン先の使用に近くなります。

宗教上の戦争をここで始めるのではなく、どちらのアプローチについても議論することを目指しています。

答えて

4

私は1つのオプションを選択するために使用するいくつかの基準を考えることができます。

ビューのセットは、再利用可能なコンポーネントが多数の画面に表示されている場合、またはUIViewサブクラスを作成することをお勧めします。

ビューコントローラが多数のビューに直接アクセスする必要がある場合は、それらをコントローラで直接作成します。カスタムのUIViewクラスを不透明なコンテナにするようにしています。そのため、コントローラは親ビューとのやりとりが必要で、子ビューを迂回する必要はありません。

たとえば、ビュー階層がビューのz-indexを正しく設定するためだけに存在し、それらのビューが無関係なデータの表示に対処するなど、単一の概念を扱うAPIを表示できない場合は、コントローラーでそれらを作成します。 UIViewサブクラスは、単一の一貫したデータセットを表示すること、または一貫した方法でサブビューのセットを管理することに責任があります。

ビューが階層外のビューに対して配置される必要がある場合は、コントローラ内でビューを定義することをやり直してください。

1

この場合MVC(モーダル、ビュー、コントローラ)を考えてください。

別のUIViewクラスを作成し、UIViewControllerのビューをこれに設定するか、コントローラのビューにサブビューとして追加して、UIViewサブクラスからコントローラへの任意のユーザー操作に委譲メソッドを使用することをお勧めします。

しかし、コントローラーのビューに1つのビューしか持たない(ビューの切り替えやフリッピングなどがない)場合は、基本的にすべてのUIに対してコントローラーのビューを使用することができます。

関連する問題