2009-04-02 13 views
5

私は、iPhone開発に新しくなじみのある人として、複数のサブビューを管理するための優れたデザインパターン、特にサブビューには同じタイプのデリゲートメソッドを定義する必要がある場所を探していました。複数のサブビューを整理する最良の方法は何ですか?

は、例えば、私は、ユーザのアクションに基づいて、2 UITableViews間で交換する必要があるビューを持っています。両方のUITableViewsには、行などを設定するために定義されたUITableViewControllerDelegateオブジェクトが必要です。

経験豊かなiPhone開発者は、両方のサブビューのデリゲートとしてメインビューコントローラに過負荷がかかることがわかりますか?現在、2つのオブジェクトが定義されており、各オブジェクトは、各UITableViewのデリゲートとして機能し、オブジェクトをより組織化しています。それは私が必要とするものを達成しますが、これは良いパターンですか?

私はメモリ管理と、そのような楽しいことで、さまざまな落とし穴を避けるために、そこにいくつかのベストプラクティスがあると仮定します。前もって感謝します!

答えて

5

ビューをコンテナとして使用して、表のような要素を保持できます。だから、あなたが概説場合には、あなたがそれのうちの1つのコンテナビューとスワップUITableViewsを持っていると思います...

良いアプローチは、各テーブルに別々のビューコントローラを持っているだろう。それ以外の場合は、さまざまなテーブルビューデリゲートメソッドでどのデータセットをサポートしているかを把握しようとすると、面倒になりすぎて、別のテーブルには適用されない可能性のあるテーブルをカスタマイズするのが難しくなります。

コンポジションされたビューコントローラを使用する際の注意点は「self.navigationController」であり、関連する呼び出しは何も返されません(ナビゲーションコントローラの子ではありません)ので、それはテーブルビューコントローラ内で幾分異なって参照または処理する。

1

これは、私が状況を自分で処理する方法です。 UITableViewごとに1つのコントローラとデリゲート。データソースを再利用することができます(つまり、同じデータが両方のUITableViewに表示されます)。そうしないと、メソッドを委譲して、どのテーブルビューがメッセージを送信しているかを調べることができます。

スイッチングUITableViewsは私にはUINavigationControllerのための仕事のように聞こえます。通常、iPhoneでは、コントロールを再配置するだけではありません。 UINavigationControllerまたはUITabBarを使用して、完全な画面を(コード内またはInterfaceBuilder経由の.nibとして)作成し、それらの間で切り替えることができます。

2

たとえば、テーブルセルが同じ方法で配置されていてもわずかに異なるデータが使用されている場合は、if文を使用することができますが、そうでなければ別のデリゲートオブジェクトを使用しますある種の。心配の分離がここにあります。あなたが2つの非常に異なることをする1つのメソッドを書いているのであれば、コードは読みやすく、保守性があり、柔軟性があるほど十分に整理されていないという兆候です。

また、そのビューを忘れないでくださいコントローラはあなたが唯一のアップル認定のタブバーとナビゲーションコントローラで使用できる魔法のオブジェクトであることをを持っていません。 2つのView Controllerを使用し、それらの間を切り替える独自の「View Controller」を書くことは、まったく正当です。あなたは、あなたがView Controllerをどこに追加するかに応じて、手動でもそうでなくても、あなたのために行うかどうかを決める魔法の仕組みがあるかどうかを判断するために、いくつかのテストを行う必要があります階層内にある。

関連する問題