2

最初のかなり複雑な Cocoa-Touch ビューを接続していると、うっかりして古い手続き型パターンに戻ってしまい、それらを振り払うのが難しいと感じています... Cocoa (OO) 設計パターンの多くは十分に認識していますが、私は私は彼らを転覆させているのではないかと心配しています。

そのため、問題のこのビューはすぐに手に負えなくなり、間違った方法でアプローチしているのではないかと思っています?!? ビューはUIViewControllerのサブクラスによって管理されます。ビュー自体には、±10 個のサブビューが含まれます。これらのサブビューの一部は「スライド」して出入りし、一緒にスライドする独自のサブビュー (コントロール、イメージビューなど) を含みます。

あまり詳しく説明しなくても、ルート ビュー コントローラーの touchesBegan/Moved/Ended メソッドを使用して、管理コードのほとんど (すべてではないにしても、アニメーションを含む) を実行していることがわかりました。そして、ブール値のプロパティの管理、設定、およびチェックの混乱になりました。 if (editingMode & panelAVisible) .... if (editingMode & panelBVisible) ... または *if (viewFlipped) { for (MyCustomView view in someArrayOfSubviews)}など ... 確かに、このアプリの UI にはこれらのほとんどが必要ですビュー (またはそのコンテンツ) に触れて、ユーザーが画面のさまざまな部分に移動できるようにします。

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

これを処理するための巧妙な (または初歩的な) OO アプローチはありますか? おそらく、ビューを含むサブビューを独自のミニ ビュー コントローラーとして機能させるのでしょうか? 私はあまりにも多くの(何か?)例を見つけることができませんでした...

4

2 に答える 2

1

質問の最後で提案したように、特定のサブビューのロジックが必要なときはいつでもサブコントローラーを用意することをお勧めします。コントローラー オブジェクトのポイントは、ビューの状態を追跡し、記述したすべてのビュー ロジックをカプセル化することです。ユーザーが別の画面に移動できるかどうか、保存ロジックを呼び出すことができるかどうか、新しいドキュメントを作成できるかどうかなどのインターフェイス アクションは、その特定のビューのコントローラーにある必要があります。これにより、さまざまなコントローラー間で懸念事項を分離し、複雑なロジックを最上位レベルで削減できます。

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

于 2009-07-08T21:21:49.123 に答える
0

最後の提案に沿って、ビューを含むサブビューを独自のミニビューコントローラーとして機能させる必要があると思います。「コンテンツでいっぱいの画面」を表示する各(サブ)ビューは、独自のビューコントローラーで管理できます/管理する必要があります。

これらのビュー間のアニメーション化は、組み込みのナビゲーション コントローラー (ナビゲーション コントローラーのトップ バーを実際に非表示にできます) を使用して行うことができ、既定のスライド アニメーションを使用できます。そうしないと、そのナビゲーション コントローラーを使用しながら、実際に独自のアニメーションを作成できます。

「ビュー自体には、±10 個のサブビューが含まれています」。これらのサブビューの一部は、[..]' に「スライド」します。あなたが話しているこれらのサブビューは、1 つのモノリシック UIView から抽出するのに最適な候補です。

使用する基本的なオブジェクト指向の原則は、ビューをスタックにプッシュおよびポップすることによって、ナビゲーション コントローラーがそれを行う方法です。プッシュおよびポップされた各ビューは、独自のビュー コントローラーによって処理されます。

HTH

編集: iPhone の開発について具体的に話しているわけではないことがわかりました。それでも、そこでどのように行われたかを見てください (特に UINavigationController)。あなたはまだ基本的なデザインのアイデアを得ることができます

于 2009-07-08T21:05:34.210 に答える