2012-04-26 15 views
0

MVCパラダイムでは、ビューはコントローラーとのやりとりだけでなく、ブラインド通信(ターゲットアクションまたはデリゲート/データソース)を介して通信することができます。私はそれを理解していますが、ビューが別のビューと通信する場合は、デリゲートを使用してMVCに違反していますか?MVCの違反を代理人経由で別のビューと通信するビューですか?

答えて

0

を使用することです。ビューのデリゲートは決して別のビューであってはなりません。コントローラでなければなりません。コントローラは、他のビューの変更を駆動するのに適した場所です。

ビューは、別のビューで気になることはほとんどありません。ビューは、「私は触れた」のようなものを代表者に伝えるべきです。なぜ別のビューが気になるのでしょうか?コントローラーは、「ああ、アクティブなフォーカスを移動する必要があることを意味します。現在のアクティブなビューに焦点を合わせるように指示してください」(例として)。私は、より広範なアプリケーションでの意味がというイベントを特定することについては責任を負いません。というイベントが発生した場合にのみ、というイベントが発生するため、他のビューに関係するメッセージは生成されません。

+0

はい。それは私がMVCモデルで正しいと思います。今、あなたがビューAを持っていて、ビューAにサブビュー(ビューB)があるとします。 Bはスーパービュー(A)と話をする必要があります。ビュー間の委任は私が考えている最も違反のないMVC方法です。別の方法は、このA/B構造を2つのサブビューを持つコントローラに昇格させることです。この最後の解決策は私が今この謎を解くためにやっていることです。どう思いますか?あなたの応答をありがとうございますと世話をする! –

+0

ビューは、その直下のサブビューとスーパービューを認識することが適切です。また、ビューがそのサブビューのデリゲートとして機能するのが一般に適切です。これによりカプセル化が改善される。このビューは、アプリケーションロジックの駆動を避けるだけです。多くの場合、サブビューデリゲートメッセージをそれ自身のデリゲートに渡すことができます。しかし、階層内のビューは、表示上の問題(例えば、強調表示やレイアウトの管理など)についてコミュニケーションを取ることが適切です。 –

-1

私は自分で初心者です。しかし、私はそうではないと思います。 jspページを呼び出すと、anothr JSPページにリダイレクトできます。私はいつかそれが起こるのを見ました。だから私はそれがある方法であると思う、別のビューを呼び出すビュー。この上

0

私の意見はオブザーバーデザインパターンを使用し、単にほとんど常に通知(NSNotification)

+0

あるビューが別のビューによって通知された通知を正しく観察するケースの例を挙げることができますか?ビュー通知は、一般に、別のビューが気にするべきものではないはずです。そうであれば、元のビューはおそらくあまりにも多すぎます。 –

+0

こんにちはmprivat!回答いただきありがとうございます。これは、MVC設計上の別の問題を引き起こす可能性があります。なぜなら、通知センターはそのMODELをCONTROLLERに戻すための手段であるからです。だから私はあなたがこれを達成するために代理人/データソースとターゲット/アクションを持っているので、VIEW(私の理解によると)にNSNotificationを使用することはMVC違反だと思います。 –

+0

通知は、別のコンポーネントと通信する方法ではありません。それは情報をブロードキャストする方法です。それでオブザーバーは自由に彼らの姿を観察することができます。 MVCでは、コントローラは、外部アクション(通常はユーザーですが、他のシステムの変更などもあります)に基づいてビューの動作(duh)を「制御」し、ビューはデータを正確に表現する責任を負います時間。これを達成するには、ビューがデータの変化を表す通知を聞くことが完全に容認されます。 – mprivat

関連する問題