有一点我想知道,也许有人可以用简单的话比医生更好地解释我…
当您想要在MKMapView上添加覆盖时,首先要添加遵循MKOverlay协议的内容。
然后,调用(MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id)overlay,您必须返回一个MKOverlayView或继承它的内容。
在addOverlay中添加的覆盖图的作用是什么,因为它不显示任何内容?为什么不直接添加一个子视图,就像对视图使用addSubview一样,并将显示所需的变量放在“里面”呢?为什么要运行这样一个两部分的进程?
发布于 2011-08-29 08:01:08
在model-view-controller (MVC) pattern中,存储数据的对象与处理表示的对象是分离的:实现MKOverlay的对象的角色是管理数据存储,而MKOverlayView对象的角色是处理地图上的表示。
例如,你可能有一个存储租户、房租、财产税等数据的ApartmentBuilding对象,你可能想在一个在地图上显示你的房地产帝国的应用程序中使用这个对象,但你也可能想在一个计算你的税单或生成一个定期维护日历的应用程序中使用相同的ApartmentBuilding数据。
如果为您的ApartmentBuilding建模的代码与在地图上显示您的建筑的代码完全分开,那么您可以将您的ApartmentBuilding模型与不同的视图对象(例如MaintenanceCalendarView或TaxSpreadsheetView )配对,并且您的代码更易于维护和重用。
https://stackoverflow.com/questions/7224327
复制相似问题