0

私が疑問に思う点があります、多分誰かがドキュメントよりも簡単な言葉で私を説明することができます...

MKMapViewにオーバーレイを追加する場合は、最初にMKOverlayプロトコルに従うものを追加します。

その後、(MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id)overlayが呼び出され、MKOverlayViewまたはそれを継承するものを返す必要があります。

addOverlay何も表示されないため、追加されたオーバーレイの役割は何ですか?ビューのaddSubviewで行われるように、サブビューを直接追加して、表示に必要な変数を「その中に」配置してみませんか?なぜそのような2つの部分のプロセスで実行するのですか?

4

1 に答える 1

4

model-view-controller(MVC)パターンでは、データを格納するオブジェクトは、プレゼンテーションを処理するオブジェクトから分離されます。MKOverlayを実装するオブジェクトの役割は、データストレージを管理することであり、MKOverlayViewオブジェクトの役割は、プレゼンテーションを処理することです。地図。

たとえば、ApartmentBuildingテナント、家賃、固定資産税などに関するデータを格納するオブジェクトがあり、そのオブジェクトを、不動産帝国を地図上に表示するアプリで使用したい場合がありますApartmentBuilding税金の請求額を計算するアプリ、またはスケジュールされたメンテナンスのカレンダーを作成するアプリで同じデータを使用します。

モデルをモデル化するApartmentBuildingコードが、建物を地図上に表示するコードから明確に分離されている場合は、ApartmentBuildingモデルを別のビューオブジェクトMaintenanceCalendarView(たとえば、またはa)とペアリングできTaxSpreadsheetView、コードの保守と再利用が容易になります。使用する。

于 2011-08-29T00:01:07.850 に答える