0

単一のビュー コントローラーに基づく単純なカレンダー アプリケーションを構築しています。ビュー コントローラーには、次のような階層があります。

  1. CDViewController
    • カレンダービュー
    • イベントビュー
    • 議題ビュー
      • TPKeyboardAvoidingTableView
      • イベント情報セル

私の質問は、特に AgendaView 内の EventInfoCell に関するものです。Cell には、表示する必要がある情報に応じて、textFields と textViews をレイアウトするさまざまな方法があります。これらのテキストフィールドとテキストビューは、テーブルビューの編集ステータスに基づいて有効化/編集可能になり、コア データ オブジェクトを編集/削除します。これらの文字列が変更されると、セルは managedObjectContext に警告して、オブジェクトを保存または削除し、その tableView を設定するアジェンダビュー内のモデルを更新し、カレンダーのすべてのイベントに関連するモデルを更新する必要があります。私の現在の構成では、viewController が EventInfoCell のデリゲートになりますが、これにより、agencyView モデルの更新が複雑になります。EventInfoCell デリゲートを AgendaView に設定し、情報が変更されたときに通知するのは、ほとんど逆効果のようです。次に、AgendaView にそのデリゲート (viewController) に単語を渡させますが、agendaView を完全にバイパスするよりも MVC に準拠している場合は、喜んで実装します。私はより良いデザインパターンは何かを理解しようとしています.どんな意見でも大歓迎です.

4

1 に答える 1

0

「EventInfoCell デリゲートを AgendaView に設定し、情報が変更されたときに通知し、AgendaView にそのデリゲートに単語を渡すようにするのは、ほとんど逆効果に思えます」

これが逆効果に見えるのはなぜですか?これは私がそれを処理する方法です。このようにしないと、情報を戻すためにAgendaView何らかのプロパティや通知などを開く必要があります。ViewControllerそれは、チェーンを介して情報を渡すよりも逆効果に思えます。さらに、最終的には何らかの変更がEventInfoCell必要になる可能性がありますがdelegate、必ずしもコア データ モデルを変更する必要はありません。したがって、委任をチェーンの上に渡す必要があると思います。

于 2012-07-11T19:22:44.713 に答える