0

この質問を参照してください:iOS4.3の代替のaddChildViewController

私のアプリは4.3のサポートを必要とするため、コンテナプログラミングに関するAppleガイドラインに記載されているアプローチを採用できません-http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

現在、各ViewControllerのビューを直接交換することはできますが、新しいView Controllerをプッシュする場合、これらの「子」はコンテナーへの参照を持たないself.navigationControllerため、スタックに新しいコントローラーをプッシュすることはできません。

iOS4.3でコンテナクラスのUINavigationControllerにアクセスできるようにするためのベストプラクティスは何ですか。Appleのドキュメントで概説されているchildViewControllerパターンがまさに私が他の方法で必要とするものであるため、4.3をサポートすることを余儀なくされているのは残念です!

ありがとう、

ティム。

4

1 に答える 1

0

iOS 4以前では、独自のUIViewController階層を作成することは想定されていないため、UIViewControllerのビューのサブビューとしてビューを直接操作する必要があります。

ただし、これを正しく行うと、UIViewController階層引き続き存在し、機能します。UINavigationControllerへの「参照がない」状況はありません。ビューには、別のビューであるスーパービューがあります。UIViewControllerのビューには、UIViewControllerへの参照があります(そのとしてnextResponder)。UIViewControllerには、親UINavigationControllerへの参照があります(存在する場合)。

そうでない場合は、ViewControllerで非常に悪いことをしています。

Appleのドキュメントにはこれが記載されており(iOS 4以前の場合)、非常に真剣に受け止める必要があります。

同じビュー階層の異なる部分を管理するために、複数のカスタムビューコントローラを使用しないでください。...ビュー階層を複数のサブエリアに分割し、それぞれを個別に管理する場合は、ビューコントローラオブジェクトの代わりに汎用コントローラオブジェクト(NSObjectの子孫であるカスタムオブジェクト)を使用して各サブエリアを管理します。次に、単一のビューコントローラオブジェクトを使用して、汎用コントローラオブジェクトを管理します。

iOS 4以降のルールは同じです。私の本のこの図のように、ビューコントローラーのビューがまったく同じ階層にある正当なUIViewController階層の一部を除いて、UIViewControllerを使用しないでください。

ここに画像の説明を入力してください

ビューコントローラが親と子であり、それらのビューがスーパービューとサブビューであることを確認します。これが、ViewController階層の使用方法です。これに違反するようなことをiOS4で行っている場合は、そうしないでください。ビューを使用しますが、ビューコントローラは使用しません。

于 2013-03-22T16:43:45.500 に答える