iOS では、UIView (およびその他) を UINavigationController または UITabBarController にのみ埋め込むことができるのはなぜですか? この 2 つのクラスの特徴は何ですか?
編集: おっと、UIView の代わりに 'UIViewController' を要求したかったのです。
あなたが言及している埋め込みは、embed in
と のみを許可するメニュー項目だUITabBarController
と思いますUINavigationController
。これは、XCode がUIViewController
サブクラスを取得し、これら 2 つのコントローラーのいずれかに埋め込むことを意味します。それらは他のコントローラーのコントローラー (UIViewControllers のコレクション) であるため、特別です。Xcode は、View Controller を作成して、それを Navigation Controller または Tab Bar に追加する際の苦労を単純に軽減します。embed
ワンクリックでコードなしで、これらのいずれかで簡単に実行できます。XCode の過去のバージョンよりもはるかに簡単です。
いいえ、そうではありません。UIView は UIViewController に組み込まれています。このクラスは、UIView のライフサイクルを提供します。ビューの初期化からビューの割り当て解除まで責任を負います。
UINavigationController と UITabBarController は、UIViewController から派生したものです。これらは、階層を構築し、階層を切り替えるための追加機能をそれぞれ提供します。
UIView は、任意の ViewController またはそのサブクラスに埋め込むことができます。UINavigationController と UITabbarController は、UIViewController のサブクラスにすぎません。
Interface Builder のように「埋め込み」について話している場合は、そうです。iOS 5 の時点で、Interface Builder はUINavigationController
、UITabbarController
、およびの 3 つのビュー コントローラー コンテナーのユーザー インターフェイスのみを適切に設計しますUISplitViewController
。これらは、すぐに使用できる 3 つのコンテナー コントローラーです。ただし、独自の View Controller コンテインメントを行うことはできます。ビュー コントローラーの封じ込めについては、WWDC 2011 のセッション 102 を参照してください。UIViewController クラス リファレンスのビュー コントローラ コンテインメントに関するセクションも参照してください。