に関するいくつかの混乱を解消してくださいUIViewController
私はこの記事を見つけました。Abusing UIViewControllerここにリンクlink1とlink2があります
とまとめたポイント
これは著者 (および Apple) のアドバイスです。
- 1 つの (そして 1 つだけの) ビュー コントローラーが、UIView の階層全体 (または画面全体) を担当する必要があります。
- ほとんどの場合、画面ごとに 1 つのビュー コントローラーのみを使用する必要があります。基本的に
rootViewControllerは、現在のビューUIWindowのみUIViewControllerが表示されている必要があります。 - 異なる画面にはそれぞれ異なるビュー コントローラが必要です。つまり、1 つのコントローラで複数の画面を制御することはできません。
- カスタム
UIViewControllersをビュー階層内にネストしないでください。 - アプリケーションの から複数
UIViewControllerのアプリケーションがハングアップした場合UIWindow、向きの変更に関するメッセージを受け取るのはそのうちの 1 つだけです。他のユーザーはこれらのメッセージを受け取りません。 - ネストされたは、から継承していても、、、
UIViewControllersなどの向きやライフサイクル メッセージの変更に関するメッセージを受信する保証はなく、受信する可能性もありません。これらのメッセージを確実に受け取るのは最上位のみです。viewDidAppear:viewWillAppear:viewDidDisappear:viewWillDisappear:UIViewControllerUIViewController
UINavigationControllerを使用する場合、またはUITabBarController複数のサブクラスを使用
する場合があるため、ポイント番号 2 と 3 をクリアしてくださいUIViewController。そして、iOSデバイスには画面が1つしかありません.....
この記事Abusing UIViewControllerハイライト Apple の提案
注: ビュー階層を複数のサブエリアに分割し、それぞれを個別に管理する場合は、ビュー コントローラー オブジェクトの代わりに汎用コントローラー オブジェクト (NSObject から派生したカスタム オブジェクト) を使用して、各サブエリアを管理します。次に、単一のビュー コントローラー オブジェクトを使用して、汎用コントローラー オブジェクトを管理します。
そして、アップルのドキュメントCoordinating Efforts Between View Controllersのアップルの見出しの下に
コンテンツを 1 画面分しか表示しない iOS アプリはほとんどありません。代わりに、最初の起動時にいくつかのコンテンツを表示し、ユーザーの操作に応じて他のコンテンツを表示および非表示にします。これらのトランジションは、一度にすべてではなく、多くのコンテンツを表示する単一の統一されたユーザー インターフェイスを提供します.....
私の要件は、コンテナー、モーダル、またはポップオーバーを使用しないことです。手動で管理したいのですが、2 つのビュー コントローラーVC1&がありVC2ます。VC1ルートView Controllerは今、切り替え/トランジット/移動したいのですが、VC2どうすればよいですか?
VC1の唯一のサブクラスでUIViewControllerあり、階層内の特定のビューを管理するためVC2のサブクラスである必要がありますか?(Apple Doc による show hide thing)。NSObjectVC1VC2のサブクラスにすることもできます。ルート ビューからUIViewController削除VC1して、ルート ビューとして追加するだけVC2ですか?
または正しい方法は何ですか?