MKPinAnnotationView - 不同引脚的不同动作

Posted

技术标签:

【中文标题】MKPinAnnotationView - 不同引脚的不同动作【英文标题】:MKPinAnnotationView - different actions in different Pins 【发布时间】:2012-03-21 20:40:08 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于MKPinAnnotationView - 不同引脚的不同动作的主要内容,如果未能解决你的问题,请参考以下文章

MKPinAnnotationView 的不同颜色取决于时间

MKPinAnnotationView 颜色不起作用

自定义 MKPinAnnotationView 颜色

MKPinAnnotationView 没有设置自定义图像

我们如何在 MapKit 中将标签放在自定义引脚上?

如何从用户位置绘制路线到iphone sdk中的某个引脚?