30

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

4

2 に答える 2

38

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

これらのコンテナー ビューについては、WWDC 2012 セッション ビデオ ビデオ「Adopting Storyboards in Your App」に説明があります。

于 2012-11-13T04:42:08.533 に答える
31

なぜ、いつコンテナー ビューを使用する必要があるのか​​、私は混乱しています。

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

また、コンテナ ビューをコードでインスタンス化するにはどうすればよいでしょうか。

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

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

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

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

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

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

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

IB のコンテナ ビュー

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

于 2012-11-13T03:17:07.923 に答える