我有一个NSObject类“MyItem”,它包含几个实例变量,其中包括在(MyMapPoint *)mapPoint中声明的mapPoint。我使用这个MKMapPoint向MKMapView添加注释。 NSMutablearray“allItems”包含所有项目。
int all =[allItems count];
int i =0;
for (i=0; i<all; i++) {
MyItem *p = [allItems objectAtIndex:i];
[mYView addAnnotation:[p mapPoint]];
这很完美。我得到一张地图,里面装满了注册物品的别针。另外,当我按下引脚时,我会得到一个气泡,这会给出标题和副标题。我还设法将一个标注添加到控制台。
NSLog (@"bubble is pushed");
也可以。
问题:当我推动气泡时,我希望(首先)控制台记录引脚所代表的实际项目的完整描述。是否有任何示例代码可追溯到完整的MyItem?看起来这个引脚没有回忆它的起源。所有帮助,样本代码和示例代码的链接都会很重要。
答案 0 :(得分:1)
听起来你的注释有一个单独的类型(即-mapPoint
方法返回的任何类型)。处理此问题的更简单方法是直接在MKAnnotation
类中实施MyItem
协议。这样,而不是:
[mYView addAnnotation:[p mapPoint]];
你可以说:
[mYView addAnnotation:p];
通过在数据对象中采用MKAnnotation
,您可以直接访问用户点击注释视图时所需的数据。
当然,另一种方法是将指针存回到注释中的数据对象。如果您的数据对象很大,或者您拥有很多数据对象,那么这会更有意义。它甚至不必是一个实际的对象指针 - 您只需要在注释中存储一些信息,以便稍后恢复数据对象。因此,例如,您可以在注释中包含标识符。当用户点击注释视图时,您可以使用标识符从数据存储中检索关联的数据。
简答:您负责将注释与数据相关联;框架不适合你。