0

我对 MKPinAnnotationView 有疑问。首先,我输入了引脚的坐标,然后调用 viewForAnnotation 来构建它们,并将它们添加到右键。

但我的问题是如何为这些引脚选择不同的操作?

当我在 NSLog 中查找按钮标签时,它总是为每个引脚显示 0,所以我无法使用标签。

如果它意味着什么,这是按钮的代码:

for (int i=0;i<=[[mapview annotations]count];i++) {
    pinView.tag = i ;
    rightButton.tag=i;
}
4

1 回答 1

0

您不需要(也不应该)使用标签。

相反,在 action 方法中,您可以确定选择了哪个注解,然后根据该注解执行不同的逻辑。

您甚至不需要创建自己的操作方法。当点击标注按钮时,地图视图将调用其calloutAccessoryControlTapped委托方法,该方法为您提供对注释的引用(即。view.annotation)。如果您决定使用委托方法,请删除addTargetfromviewForAnnotation并仅实现委托方法。

如果您出于某种原因想要使用自己的操作方法,您可以通过查看地图视图的selectedAnnotations属性来确定选择了哪个注释。选定的注释将位于索引 0 处(确保首先检查数组count不为零)。


有关上述所有示例代码,请参阅此问题:
How to keep data associated with MKAnnotation from being lost after a callout pop up and user taps tracking button?

于 2012-03-21T21:07:19.153 回答