0

オーバーレイを表示して地図上で人を見つけたいプロジェクトがあります。MVC パターンを実践したことがないため、MVC パターンに従うのは困難です。

データベースに、位置 (マップ座標) と 1 人の人物を識別するための画像 (オーバーレイの画像) を保存します。

2 つ以上が同じ位置にある場合、それらは別の「グループ」オーバーレイの下にグループ化されます。オーバーレイがタッチされたときに、そのタイプ (「グループ」または「シングル」) に応じて異なる情報を表示したい。

これが私の問題です。メソッドOverlayを再定義するには、プロパティ position と image を持つスーパークラスをサブクラス化する必要があることは明らかです。overlayTouched:しかし、このコードは通常、MVC パターンのビュー コードですが、オーバーレイは保存されるためモデル オブジェクトであるため、混乱しています。

これをどのように設計すればよいですか?

4

1 に答える 1

1

タッチイベントを追加するためにサブクラス化Overlayするのではなく、新しいUIView、を作成する必要があります。YourNewView

これYourNewViewは、のインスタンスを「持っている」Overlayものであり、モデルからに必要なすべてのメソッドを委任します。Overlay

例えば。にがあり、オーバーレイをDBに保存する場合は、次のようにしますtouchesEndedYourNewView

//in touchesEnded
[self.overlay saveToDb];

など、すべての通話はOverlayクラスに転送されます

于 2012-06-28T08:47:02.943 に答える