我有一個應用程序,它使用幾個不同屏幕上的地圖。所有地圖都應顯示相同的基本信息(註釋和覆蓋圖),但每個實例都會向地圖添加不同的附加註釋和覆蓋圖。我想創建一個類,它實現了與MKMapView
完全相同的常用功能和行爲。這怎麼可能?如何創建擴展MKMapView
我有三個想法來解決這個問題,但他們都沒有一個好的解決方案。
子類
MKMapView
。這種方法的問題是地圖從它的委託中獲取有關它的註釋和覆蓋信息,它應該是子類(一個視圖...)本身,因此添加額外的數據是有問題的(我無法設置委託其他比班級本身)。Wrap
MKMapView
。我可以創建一個NSObject
/UIView
子類,它具有MKMapView
,但要麼我必須將所有地圖的方法代理到我的類中,要麼通過知道內部對象來訪問地圖(myMapView.mapView.xxx
...)。創建委託類(
NSObject
與MKMapViewDelegate
函數)。委託類可以實現常見的行爲。此解決方案也有類似於第一個問題。
我該如何解決這個優雅?
這種方式我應該實現和代理每個MKMapView功能,如果我正確理解你。 – gklka
您只需要在父類中實現MKMapView方法。然後通過子類向父類提供註釋和覆蓋數據,並實現方法在父類中添加註釋,您需要從子類調用該註釋。這樣它會在你添加的每一個控制器中創建新的mapview實例,並且你不需要在所有類中實現MKMapView方法 – vivek
@gklka請檢查我的評論 – vivek