MKPinAnnotationView - 不同引脚中的不同动作

时间:2012-03-21 20:40:08

标签: iphone mapkit mkpinannotationview

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

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

当我在NSLog中查找按钮标签时,每个引脚始终显示0,因此我无法使用标签。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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


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