MVCパラダイムでは、ビューはコントローラーとのやりとりだけでなく、ブラインド通信(ターゲットアクションまたはデリゲート/データソース)を介して通信することができます。私はそれを理解していますが、ビューが別のビューと通信する場合は、デリゲートを使用してMVCに違反していますか?MVCの違反を代理人経由で別のビューと通信するビューですか?
答えて
を使用することです。ビューのデリゲートは決して別のビューであってはなりません。コントローラでなければなりません。コントローラは、他のビューの変更を駆動するのに適した場所です。
ビューは、別のビューで気になることはほとんどありません。ビューは、「私は触れた」のようなものを代表者に伝えるべきです。なぜ別のビューが気になるのでしょうか?コントローラーは、「ああ、アクティブなフォーカスを移動する必要があることを意味します。現在のアクティブなビューに焦点を合わせるように指示してください」(例として)。私は、より広範なアプリケーションでの意味がというイベントを特定することについては責任を負いません。というイベントが発生した場合にのみ、というイベントが発生するため、他のビューに関係するメッセージは生成されません。
私は自分で初心者です。しかし、私はそうではないと思います。 jspページを呼び出すと、anothr JSPページにリダイレクトできます。私はいつかそれが起こるのを見ました。だから私はそれがある方法であると思う、別のビューを呼び出すビュー。この上
私の意見はオブザーバーデザインパターンを使用し、単にほとんど常に通知(NSNotification)
あるビューが別のビューによって通知された通知を正しく観察するケースの例を挙げることができますか?ビュー通知は、一般に、別のビューが気にするべきものではないはずです。そうであれば、元のビューはおそらくあまりにも多すぎます。 –
こんにちはmprivat!回答いただきありがとうございます。これは、MVC設計上の別の問題を引き起こす可能性があります。なぜなら、通知センターはそのMODELをCONTROLLERに戻すための手段であるからです。だから私はあなたがこれを達成するために代理人/データソースとターゲット/アクションを持っているので、VIEW(私の理解によると)にNSNotificationを使用することはMVC違反だと思います。 –
通知は、別のコンポーネントと通信する方法ではありません。それは情報をブロードキャストする方法です。それでオブザーバーは自由に彼らの姿を観察することができます。 MVCでは、コントローラは、外部アクション(通常はユーザーですが、他のシステムの変更などもあります)に基づいてビューの動作(duh)を「制御」し、ビューはデータを正確に表現する責任を負います時間。これを達成するには、ビューがデータの変化を表す通知を聞くことが完全に容認されます。 – mprivat
- 1. 代理人経由で画像ビューを渡す
- 2. あるビューから別のビューへの代理人
- 3. 別のビューに代理人PickerViewの代理人
- 4. uiviewcontrollerとuitableviewcontrollerの間で通信するSwift代理人
- 5. 別のビューからモーダルを閉じる(デリゲート経由で)
- 6. MVCのJSONまたはILIST経由でビューにデータを返す
- 7. GAE経由で通信するAndroidクライアント
- 8. MVCアプリケーションのビューからビジネスオブジェクトを反復すべきですか?
- 9. ハイパーターミナル経由でJavaを使用するハードウェアとの通信
- 10. NFC経由でBlackBerryとAndroidの間で通信できる人はいますか?
- 11. MVCコントローラから別のビューを返す
- 12. Objective-Cの代理人と通知
- 13. AndroidアプリはUSB経由でデスクトップアプリケーションと通信できますか?
- 14. 着信通話を処理し、SMS経由で返信するソフトウェア
- 15. C/C++経由でのRDP通信
- 16. 個別のappdomainでmvcビューを実行
- 17. Windowsでネットワーク経由でドライバと通信する
- 18. ASP.NET MVCの別のアセンブリでのビュー
- 19. 2つのビューとajaxでモデルフォーム経由でモデルを更新するときのリダイレクトの処理
- 20. WF4で代理人を使用する理由は何ですか?
- 21. node.js経由でアンドロイドプッシュ通知を送信
- 22. ビューとデザインパターンの間の通信
- 23. シリアルbtブリッジ経由でiPhoneと通信することは可能ですか?
- 24. C++経由でerlangサーバと通信する(バイナリを送信する)
- 25. PHP:SMTP経由でメールサーバーと通信する方法は?
- 26. c#経由でsocket.ioサーバーと通信する
- 27. Androidデバイス、USBポート経由でデバイスと通信する
- 28. OmniAuth認証後にPOST経由でRailsアプリケーションと通信する
- 29. WiFi経由でZigBeeデバイスと通信する
- 30. iOS - ローカルホスト経由でアプリ間で通信することはできますか?
はい。それは私がMVCモデルで正しいと思います。今、あなたがビューAを持っていて、ビューAにサブビュー(ビューB)があるとします。 Bはスーパービュー(A)と話をする必要があります。ビュー間の委任は私が考えている最も違反のないMVC方法です。別の方法は、このA/B構造を2つのサブビューを持つコントローラに昇格させることです。この最後の解決策は私が今この謎を解くためにやっていることです。どう思いますか?あなたの応答をありがとうございますと世話をする! –
ビューは、その直下のサブビューとスーパービューを認識することが適切です。また、ビューがそのサブビューのデリゲートとして機能するのが一般に適切です。これによりカプセル化が改善される。このビューは、アプリケーションロジックの駆動を避けるだけです。多くの場合、サブビューデリゲートメッセージをそれ自身のデリゲートに渡すことができます。しかし、階層内のビューは、表示上の問題(例えば、強調表示やレイアウトの管理など)についてコミュニケーションを取ることが適切です。 –