0

に関するいくつかの混乱を解消してくださいUIViewController

私はこの記事を見つけました。Abusing UIViewControllerここにリンクlink1link2があります

とまとめたポイント

これは著者 (および Apple) のアドバイスです。

  1. 1 つの (そして 1 つだけの) ビュー コントローラーが、UIView の階層全体 (または画面全体) を担当する必要があります。
  2. ほとんどの場合、画面ごとに 1 つのビュー コントローラーのみを使用する必要があります。基本的にrootViewControllerは、現在のビューUIWindowのみUIViewControllerが表示されている必要があります。
  3. 異なる画面にはそれぞれ異なるビュー コントローラが必要です。つまり、1 つのコントローラで複数の画面を制御することはできません。
  4. カスタムUIViewControllersをビュー階層内にネストしないでください。
  5. アプリケーションの から複数UIViewControllerのアプリケーションがハングアップした場合UIWindow、向きの変更に関するメッセージを受け取るのはそのうちの 1 つだけです。他のユーザーはこれらのメッセージを受け取りません。
  6. ネストされたは、から継承していても、、、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どうすればよいですか?

  1. VC1の唯一のサブクラスでUIViewControllerあり、階層内の特定のビューを管理するためVC2のサブクラスである必要がありますか?(Apple Doc による show hide thing)。NSObjectVC1

  2. VC2のサブクラスにすることもできます。ルート ビューからUIViewController削除VC1して、ルート ビューとして追加するだけVC2ですか?

または正しい方法は何ですか?

4

1 に答える 1

1

コンテナー ビュー コントローラー (UINavigationController など) を使用すると、画面ごとに 1 つの VC ルールを回避できます。iOS 5 以降、開発者は独自のコンテナー コントローラーを作成できるようになりました (実際には、通常の VC とそれほど違いはありません)。一般に、これは、非 VC コントローラ オブジェクトを記述する必要性が以前より少なくなったことを意味します。

ルートView Controllerを置き換えたい状況では、オプション2がより理にかなっています。可能な場合は VC を使用し、そうでない場合にのみ非 VC コントローラー オブジェクトを使用します。画面全体のコンテンツを置き換えるので、単に切り替えるのUIWindow rootViewControllerが最も理にかなっています (編集: あるいは、多くの開発者は、シンプルで便利なため、ナビゲーション コントローラーを使用して 2 番目のビューを表示します)。

于 2013-07-15T15:25:02.383 に答える