2012-01-03 13 views
0

これは、iOSアプリケーションで複雑なビュー階層を作成する際のベストプラクティスに関するオープンな質問です。この質問の目的のために、私は複雑なビュー階層を、いくつかのビューをいくつかのモデルを統合したものとして定義します。たとえば、iPadでは、右側のビューでコンテンツを制御するビューが左側に表示されます。各ビューは、複数の要素(ボタン、テーブルビュー、ジェスチャー、アニメーション、ビヘイビアなど)を持つことができます。コンテナビューコントローラと複雑なビュー階層

これらのすべてを単一のView Controllerに統合することはもちろん可能です。しかし、いくつかの緩やかに関連するモデルを統合する非常に複雑なビューコントローラが残っているかもしれません。あるいは、各ビューをそれぞれのビュー/コントローラのペアに分解し、それらをコンテナビューコントローラに追加することもできます。

個人的には、コンテナビューコントローラを使用することをお勧めします。これは、非常に特定の目的にサービスを提供するときに、単一のビューコントローラに自分の努力を集中させるためです。

どのアプローチを選択したのですか?その理由は何ですか?

答えて

3

Defenatly 'Container View Controller'。私の会社では、「シンプルで馬鹿だよ」と言っていました。ですから、私はView、ViewController、Model、およびDataControllerを持つのが最善だと思います。各機能が(最高でも)3行のコードでなく、各行はもはや80文字ではありません。そして、クラスはもはや400ラインではありません。だから、あなたは自分が所属する自分の場所にすべてのものを持っていると確信しています。いくつかのことがどこで行われたのか明確です。

また、1つのコントローラは1つだけしか行いません。したがって、NewsletterOrderViewControllerは、eMailとNameテキストフィールドから値を取り、WebServiceControllerに渡す必要があります。 これで、すべての関数とすべてのクラスは同じ抽象レベルになければなりません。 これは、NewsletterOrderViewControllerの例です。ボタンがプッシュされたときのメソッドメソッドは、dataFromForm、sendDataToServiceのように機能します。次にdataFromFormの内部でstringFromTextFieldを呼び出すことができ、このメソッド(最終的には[sometextfield getText];)で呼び出すことができます。もちろん)

このすべては、私の個人的な意見...

+3

+1。一般的に、クラス内の行数の厳密な制限を除いて、良いアドバイスは少しばかげているようです。コードを読みやすくしながら効率的に作業を進めるために必要な数の行にする必要があります。私自身の意見ではもちろん。 :) –

+0

はい、あなたは正しい;)しかし、私の経験では、あなたのクラスが400ライン以上長いとき、あなたはKeep-it-simple-and-stupidルールを見逃してしまった。すべてのケースでそうではありませんが、ほとんどの場合 –

1

常に、常に、常に複雑なviewControllers用コンテンツUIViewsを使用しています。これは非常に、非常に単純な例ですが、私はあなたが私が言いたいことを理解してほしいです。 UIViewControllerクラスは画面全体を持つように作成されているため、非常にうまくいっている場合を除いて画面全体を占有するためにのみ使用する必要があります。

複雑さについてのあなたのコメントは、各ビューを最高または最も単純にすることに努力している限り、パッチワークのケースを持つべきではありません。

+1

iOS 5では、Appleはコンテナビューコントローラのサポートを追加しました。 UIViewControllerが「画面全体を持つ」という考え方は、もはや真実ではありません。 コンテンツビューをできるだけシンプルにするために採用する戦略は何ですか?たとえば、ビュー階層に複数のテーブルビューがある場合は、ビューコントローラを各オブジェクトのデリゲートとデータソースにするか、データソース/デリゲートとして新しいオブジェクトを割り当てますか?または、さらに進んで、UIViewのカスタムサブクラスを定義して、テーブルビューとそのデータソースとデリゲートを含めますか? – Eytan

+0

私の戦略は次のとおりです。複雑なビューの階層構造を単純なものと同様に動作させるために人力や時間を費やさない限り、それについて考えることはありません。常に量以上の品質 – CodaFi

関連する問題