2016-09-20 137 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