2009-07-08 2 views
2

私は私が不注意十分に認識しますが...古い手続き型のパターンに戻って滑り、それは難しいオフにそれらを振る見つけるてるように感じる私の最初のかなり複雑ココアタッチビューをワイヤなど多くのココア(OO)デザインパターンのうち、私はそれらを覆しているかもしれないと恐れています。このようにの簡素化、複雑ココアタッチビュー・コントローラ

は、問題のこのビューには、すぐに管理不能になってきていると私はそれを間違った方法に近づいている可能性がある場合、私は思ったんだけど?!?ビューは、UIViewControllerのサブクラスによって管理されます。ビュー自体に±10のサブビューが含まれています。これらのサブビューのいくつかは、「スライド」してスライドし、サブスライド(コントロール、イメージビューなど)を含んでいます。

あまりにも細かくなっていないと、ルートビューコントローラのtouchesBegan/Moved/Endedメソッドを使用して管理コードを(アニメーションを含めてすべてではないにしても)実行していることがわかりました。 管理の混乱になり、&ブール値のプロパティをチェックします。IF(editingMode & panelAVisible) .... (editingMode & panelBVisible)は...または* {(someArrayOfSubviewsでMyCustomView ビュー)用}(viewFlipped)は等、等... UIを付与した場合場合このアプリのほとんどは、これらのビュー(またはその内容)の大部分をユーザーがタッチして画面の別の部分に移動する必要があります。

私が解決しようとしている主な問題は、viewAが存在する場合、3つのビューが非表示になります(アニメーション)...または、viewBがタッチされると、viewCに含まれるすべてのオブジェクトが否定的な...等

これを扱うための巧妙な(または初歩的な)OOアプローチはありますか?おそらく、ビューを含むサブビューを独自のミニビューコントローラとして動作させるのでしょうか?私はあなたがビューが含まれているサブビューが自分のミニビューコントローラとして機能させる、あなたの最後の提案に沿って行くべきだと思う...

答えて

0

そのかかわらず、あまりにも多くの(どんな?)の例を見つけることができませんでした。 「コンテンツがいっぱいのスクリーン」を提示する各(サブ)ビューは、それ自身のビューコントローラによって管理することができます。これらのビュー間のアニメーション

は、デフォルトのスライドアニメーションを持っていること(あなたが実際にナビゲーションコントローラの上部のバーを非表示にすることができます)、このようなナビゲーションコントローラでビルドして行うことができます。そうしないと、実際にはナビゲーションコントローラーを使用しながら独自のアニメーションを作成することができます。

'ビュー自体に±10個のサブビューが含まれています。'これらのサブビューのいくつかは「スライド」して出てきます。あなたが話しているこれらのサブビューは、あなたの1つのモノリシックUIViewから抽出するための完璧な候補です。使用する

基本的なオブジェクト指向の原則は、ナビゲーションコントローラは、スタックオンとオフの見解を押すとポップで、それをしない方法です。プッシュおよびポップされた各ビューは、それぞれのビューコントローラによって処理されます。

HTH

編集:私は今、あなたは、特にiPhoneの開発について話していない参照してください。それでも、そこで何が行われたかを見てください(特にUINavigationController)。あなたがあなたの質問の最後で示唆したようにあなたはまだ基本的なデザインのアイデア

+0

私はもっと明確にすべきだったでしょう。はい、これはiPhone向けです。そして、これらのサブビューは完全な「内容でいっぱいのスクリーン」ではありません。彼らはおそらく1/6スクリーンの 'パネル'で、タッチするとスライドして追加のコントロール/ UIViewを提供します。だから彼らは完全なUINavigationControllerをmerritとは思わないでください。 – Meltemi

+0

おそらくナビゲーションコントローラがあまりにもあなたのためです。それにもかかわらず、サブビュー用に別々のビューコントローラを作成することができます。 – drvdijk

1

を得ることができ、私はあなたが特定のサブビューのロジックを必要なときにサブコントローラを持つことをお勧めします。コントローラオブジェクトのポイントは、ビューの状態を追跡し、記述していたすべてのビューロジックをカプセル化することです。ユーザーが別の画面に移動できるようなインターフェース操作は、セーブロジックを呼び出すことができ、新しい文書を作成することができ、その特定のビューのコントローラーになければなりません。これは、さまざまなコントローラ間の懸念の分離を維持し、トップレベルで複雑なロジックをカットするのに役立ちます。

具体的にはiPhoneプログラミングに関するものではありませんが、書籍Cocoa Programming for Mac OS Xには、アプリケーションのサブコントローラーとサブビューを使用する良い例が含まれています(特に、環境設定ウィンドウの方法に関する章を参照)。

+0

ねえ!私はヒレガスの本を持っています。あなたが言及した章を見直して報告します... – Meltemi