web-dev-qa-db-ja.com

iOS 5 SDKのContainer Viewとは何ですか?

なぜ、いつコンテナビューを使用する必要があるのか​​混乱しています。そして、どのようにコードでコンテナビューをインスタンス化できますか?

30
William Choi

コンテナービューは、ストーリーボードに既にあるビューコントローラーの1つにドラッグできるビューです(このビューコントローラーAと呼びます)。埋め込みセグエを介して、このビューに接続されたビューコントローラーを自動的に取得します。この新しいビューコントローラーにはフレームセットがあり、コンテナービューと同じサイズになります。コンテナービューのサイズを変更すると、コントローラーも自動的にサイズ変更されます。そのため、必要に応じて、複数のコンテナビューをviewControllerAにドラッグでき、それぞれに独自のビューコントローラがあります。コードでは、これらの埋め込みビューコントローラーにアクセスする必要がある場合、viewControllerA.childViewControllersからアクセスできます。これにより、任意の埋め込みビューコントローラーの配列が提供されます。

これらのコンテナビューについては、「アプリでのストーリーボードの採用」というWWDC 2012セッションビデオのビデオで説明されています。

38
rdelmar

コンテナビューを使用する必要があるのはなぜですか?

人々がコンテナビューについて話すとき、それらは通常、他のビューを含むプレーンな古いUIViewを意味します。この方法でビューを使用すると、ビューに含まれるすべてのビューをグループとして移動できるため、互いの相対的な位置が維持されます。また、含まれているすべてのビューをグループとして簡単に非表示にすることもできます。

そして、どのようにコードでコンテナビューをインスタンス化できますか?

通常、コードからUIViewをインスタンス化するのと同じ方法:

CGRect frame = CGRectMake(someX, someY, someWidth, someHeight);
UIView *container = [[UIView alloc] initWithFrame:frame];

その後、おそらくコンテナーにいくつかのサブビューを追加し、最終的にはコンテナーをビューコントローラーのビューのサブビューとして追加する必要があります。

また、viewsではなく、viewコントローラーについて話していることに注意してくださいここに。人々はまた、他のビューコントローラを管理できるビューコントローラを意味するコンテナビューコントローラについて話します。 UITabBarController、UINavigationController、およびUISplitViewControllerは、iOSによって提供されるコンテナービューコントローラーの例です。必要に応じて独自に作成できますが、それは別の質問のトピックです。

pdate:コメントから、ストーリーボードエディターの[コンテナービュー]アイテムについて疑問に思っているようです。 1つをビューにドラッグすると、次のように表示されます。

  1. ビュー自体は、プレースホルダーとして使用されるUIViewです。

  2. エディターはビューとともに、子ビューコントローラーによって管理されるコンテンツを編集できる領域を作成します。下の図を参照してください。

container view in IB

これは1つのオブジェクトではなく、複数のオブジェクトです。ビュー、子ビューコントローラー、および「埋め込み」セグエを取得します。あなたは確かに自分でコードでそれらを作成し、必要に応じてそれらを適切に接続することができます。

30
Caleb