1

私はプレイエリアに並べられたたくさんのカードからなるゲームに取り組んでいます。各カードは UIView のサブクラスです。Core Data モデル オブジェクト内の各カードの位置も追跡するので、移動するたびにその位置を保存できます。

私は適切な MVC 分離を維持しようとしていますが、どのモデル オブジェクトがカード ビューに対応するかをコントローラーで識別するための最良の方法は何か疑問に思っています。つまり、再生領域でカード ビューを移動すると、そのパン ジェスチャ レコグナイザーがコントローラーのメソッドを呼び出します。次に、このメソッドは、カード モデル オブジェクトの新しい位置座標を更新します (そして、カードをデータベースに保存します)。

ビューからモデルへの参照を提供する方法はいくつか考えられます。

  • 各カード ビュー オブジェクトのプロパティにカード モデル オブジェクトを格納します。(しかし、これはモデルをビューに入れますね?)
  • カード モデルの URL 識別子をカード ビュー オブジェクトのプロパティに保存します。(前と同じですが参考程度、軽量化)
  • カード ビューをカード モデル オブジェクトにマップするディクショナリ ルックアップ テーブルをコントローラに作成します。(ダサすぎる?)

より良い方法はありますか?どのようにしますか?

4

1 に答える 1

0

私がすることは、テーブル ビューの動作をコピーすることです。

すべてのカードを要求するメソッドを持つことができます。そのメソッドでは、ビュー コントローラー (コントローラー) のコア データ (モデル) から取得したカード (ビュー) を作成して返します。

そのメソッドは、プレイエリアをペイントするクラスから呼び出す必要があります。

それが役に立てば幸い

于 2013-05-23T16:42:04.583 に答える