1

我有一个 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?似乎别针不记得它的起源。所有帮助、示例代码和指向示例代码的链接都将得到高度重视。

4

1 回答 1

1

听起来您的注释有一个单独的类型(即-mapPoint方法返回的任何内容)。处理这个问题的一个更简单的方法是MKAnnotation直接在你的MyItem类中实现协议。这样,而不是:

[mYView addAnnotation:[p mapPoint]];

你可以说:

[mYView addAnnotation:p];

通过MKAnnotation在您的数据对象中采用,您可以在用户点击注释视图时直接访问所需的数据。

当然,另一种方法是在注释中存储一个指向数据对象的指针。如果您的数据对象很大,或者您有很多数据对象,这可能更有意义。它甚至不必是一个实际的对象指针——您只需要在注释中存储一些信息,以便以后恢复数据对象。因此,例如,您可以在注释中包含一个标识符。当用户点击注释视图时,您可以使用标识符从数据存储中检索相关数据。

简短的回答:您负责将您的注释连接到您的数据;框架不适合你。

于 2012-08-08T16:07:12.843 回答