階層

2010-12-02 12 views
9

ビューコントローラプログラミングガイド状態このについてのView Controllerの使用方法:あなたが作成 階層

各カスタムView Controllerオブジェクトは、すべての を管理する責任があります単一のビュー内のビュー 階層。 iPhoneアプリケーションでは、 ビュー階層の ビューは伝統的に画面全体をカバーしますが、 ですが、iPadアプリケーションでは は画面の一部のみをカバーします。 のビューコントローラとそのビューの ビュー階層との間の1対1対応がキーデザイン の配慮です。 複数のカスタムビューコントローラを ビュー階層の異なる部分を管理するために使用しないでください。同様に、 は、 コントローラーオブジェクトを1つのカスタムビューで使用して、複数の 画面のコンテンツを管理しないでください。

私のような私たちは、ビューの部分を制御するために、複数のカスタムビューコントローラの(順番にビューコントローラによって管理されているメインビューのサブビューを管理するために、すなわちビューコントローラ)を使用する場合、デフォルトの方法を理解:

didReceiveMemoryWarnings 
viewWillAppear 
viewWillDisappear 
viewDidUnload 

などは呼び出されない。

これ以外にも、ビューのそれぞれのサブビューを管理するために複数のビューコントローラを使用すべきではないという他の強固な理由はありますか?

注:

ドキュメントとしても読み込み、代替ソリューションを提供しますが、複数のサブ領域に表示 階層を分割し、 それぞれを個別に管理し、 一般的なコントローラオブジェクトを使用する場合(カスタム NSObjectから下降するオブジェクト) ビューコントローラオブジェクトの代わりに 各サブエリアを管理します。次に、単一の ビューコントローラオブジェクトを使用して、 ジェネリックコントローラオブジェクトを管理します。

しかし、については、複数の表示コントローラを推奨するべきではありません。私の質問は次のとおりです:

私たちはこのように好きではないのはなぜですか?

UIViewControllerのサブクラスを使って私のビューを管理するのが好きだから、毎回nibからロードして、各ビューコントローラのペン先を分離する方が好きなので気になります。プロジェクトの後の段階で変更を簡単に受け入れることができます。これは間違っていますか?プログラミングスタイルを必然的に変更する必要がありますか、このアプローチを進めても大丈夫ですか?

おかげで、

ラジ

答えて

3

まあ、私は「限り、それが動作するよう」と言うだろう、あなたは何あなたのようなことを続けることができます! しかし、物事を「きれいに」保つために、私は自分のオブジェクトを使用します。 ViewControllerはナビゲーションコントローラやタブバーコントローラなどの一般的な機能を念頭に置いて設計されているため、単純な使い方では「重く」なります。 さらに、上記のように、いくつかのイベントは、viewControllerのビューがメインウィンドウに追加されたときにのみ呼び出されます。

Interface Builderで独自のオブジェクトを使用することはできませんか? 1つ(または複数)のUIView IBOutlet(複数可)を作成する場合、同じ動作するはずです。

+0

はい、できます。私はNSObjectサブクラスを作成し、それをそのペン先のファイルの所有者として指定できます。しかし、どうしてこのようにしなければならないのかといった他の具体的な理由があるのだろうかと思っていました。オブジェクトが「重い」という説明は、今のところ十分です。 –

+1

まあ、私はそれがかなり役に立たないと思います。あなたが与えた唯一の理由は、IBでそれらを分離することだけだったので、それはNSObjectで行うことができます。私はUIViewControllerのメソッドのいずれかを使用するとは思わないので、なぜこの特定のオブジェクトをサブクラス化するのですか?つまり、他のUIResponderサブクラス(UIViewやUIButtonのような)をサブクラス化することもできますが、興味深いのはビューIBOutletだけなので、そのような特定のオブジェクトは必要ありません。 – Julien

+0

うん、本当は。合意した –

0

1つの画面で2つのUIViewControllerを使用するアプリがあります。子はUITableViewControllerです。私は子供のUIViewControllerの動作のどれにも依存しません - UITableViewControllerメソッドのみ。これは、子のUITableViewControllerが画面全体を管理する場合があるため便利です。その場合、UIViewControllerメソッドを使用します。疑問のあるデザイン?多分。今は2年間はうまくいっています。しかし、私はパターンを推薦するかどうか分からない。