に関するいくつかの混乱を解消してくださいUIViewController
私はこの記事を見つけました。Abusing UIViewController
ここにリンクlink1とlink2があります
とまとめたポイント
これは著者 (および Apple) のアドバイスです。
- 1 つの (そして 1 つだけの) ビュー コントローラーが、UIView の階層全体 (または画面全体) を担当する必要があります。
- ほとんどの場合、画面ごとに 1 つのビュー コントローラーのみを使用する必要があります。基本的に
rootViewController
は、現在のビューUIWindow
のみUIViewController
が表示されている必要があります。 - 異なる画面にはそれぞれ異なるビュー コントローラが必要です。つまり、1 つのコントローラで複数の画面を制御することはできません。
- カスタム
UIViewControllers
をビュー階層内にネストしないでください。 - アプリケーションの から複数
UIViewController
のアプリケーションがハングアップした場合UIWindow
、向きの変更に関するメッセージを受け取るのはそのうちの 1 つだけです。他のユーザーはこれらのメッセージを受け取りません。 - ネストされたは、から継承していても、、、
UIViewControllers
などの向きやライフサイクル メッセージの変更に関するメッセージを受信する保証はなく、受信する可能性もありません。これらのメッセージを確実に受け取るのは最上位のみです。viewDidAppear:
viewWillAppear:
viewDidDisappear:
viewWillDisappear:
UIViewController
UIViewController
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)。NSObject
VC1
VC2
のサブクラスにすることもできます。ルート ビューからUIViewController
削除VC1
して、ルート ビューとして追加するだけVC2
ですか?
または正しい方法は何ですか?