2016-09-20 139 views
2

我有一個應用程序,它使用幾個不同屏幕上的地圖。所有地圖都應顯示相同的基本信息(註釋和覆蓋圖),但每個實例都會向地圖添加不同的附加註釋和覆蓋圖。我想創建一個類,它實現了與MKMapView完全相同的常用功能和行爲。這怎麼可能?如何創建擴展MKMapView

我有三個想法來解決這個問題,但他們都沒有一個好的解決方案。

  1. 子類MKMapView。這種方法的問題是地圖從它的委託中獲取有關它的註釋和覆蓋信息,它應該是子類(一個視圖...)本身,因此添加額外的數據是有問題的(我無法設置委託其他比班級本身)。

  2. Wrap MKMapView。我可以創建一個NSObject/UIView子類,它具有MKMapView,但要麼我必須將所有地圖的方法代理到我的類中,要麼通過知道內部對象來訪問地圖(myMapView.mapView.xxx ...)。

  3. 創建委託類(NSObjectMKMapViewDelegate函數)。委託類可以實現常見的行爲。此解決方案也有類似於第一個問題。

我該如何解決這個優雅?

回答

0

創建一個類並添加地圖到該類的視圖。 現在將該類作爲父類,用於要添加Mapview的所有類。 當您想添加註釋和覆蓋圖時,向父類提供數據。

+0

這種方式我應該實現和代理每個MKMapView功能,如果我正確理解你。 – gklka

+0

您只需要在父類中實現MKMapView方法。然後通過子類向父類提供註釋和覆蓋數據,並實現方法在父類中添加註釋,您需要從子類調用該註釋。這樣它會在你添加的每一個控制器中創建新的mapview實例,並且你不需要在所有類中實現MKMapView方法 – vivek

+0

@gklka請檢查我的評論 – vivek