我对MKPinAnnotationView有疑问。首先,我输入了引脚的坐标,之后调用了viewForAnnotation来构建它们,并为它们添加一个右键。
但我的问题是如何为这些引脚选择不同的动作?
当我在NSLog中查找按钮标签时,每个引脚始终显示0,因此我无法使用标签。
这是按钮的代码,如果它意味着什么:
for (int i=0;i<=[[mapview annotations]count];i++) {
pinView.tag = i ;
rightButton.tag=i;
}
答案 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?