2012-11-13 8 views

答えて

38

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

WWDC 2012セッションビデオのビデオでは、「あなたのアプリケーションでストーリーボードを採用する」というコンテナビューについての議論があります。

+0

これはプログラムで書面で "コントローラを含む"と同じですか? – huggie

+2

@huggie、IBのコンテナビューを使用すると、コードでカスタムコンテナコントローラのAPIを使用した場合と同じことが得られます。 – rdelmar

30

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

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

どのようにコードでコンテナビューをインスタンス化できますか?あなたは通常、コードからのUIViewのインスタンスを作成したい

同じ方法:その後

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

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

はまた、我々はおよそ見解ないビューコントローラここを話していることに注意してください。また、コンテナビューコントローラについても、他のビューコントローラを管理できるビューコントローラを意味します。 UITabBarController、UINavigationController、およびUISplitViewControllerは、iOSによって提供されるコンテナビューコントローラの例です。あなたが望むならあなた自身で作ることができますが、それは別の質問の話題です。

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

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

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

container view in IB

これはただ一つのオブジェクトではありません - それはいくつかあります。ビュー、子ビューコントローラー、および埋め込みセグを取得します。必要な場合は、コード内でそれらを作成し、適切に接続することができます。

+0

私はこれがオペアンプが求めているとは思わない。ビューコントローラを含むことができるIBで利用可能な新しいタイプのビューがあります(ストーリーボードのみ)。そのビューコントローラは埋め込みセグを介して接続されています。これは、通常のビューおよびコンテナビューコントローラとは異なります。このことがまさに裏にあるのはわかりません - 私はそれについてのドキュメンテーションを見つけることができません。私はそれがコードで作成することができますが、私はどのように考えていないと仮定します。 – rdelmar

+0

@rdelmar、はい、私はIBで利用できる "コンテナビュー"について質問しています。私は "コンテナビュー"と共通の "ビュー"の間で混乱しています。私の理解によると、ビューにはサブビューが含まれていてもよく、サブビューは自分のコントローラで管理することもできます。私の理解が間違っているかもしれませんが、ご理解いただきありがとうございます。 –

+0

@ウィリアムチョイ、私の答えを見てください。 – rdelmar

関連する問題