我在这张地图上找到了一个MKMapView
和大量针脚的应用。
每个引脚都有rightCalloutAccessoryView
。我以这种方式创建它:
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView = rightButton;
我怎么知道,哪个引脚被敲了?日Thnx
答案 0 :(得分:10)
在showDetails:
方法中,您可以从地图视图的selectedAnnotations
数组中获取引脚。即使属性是NSArray
,也只需获取数组中的第一项,因为地图视图一次只允许选择一个引脚:
//To be safe, may want to check that array has at least one item first.
id<MKAnnotation> ann = [[mapView selectedAnnotations] objectAtIndex:0];
// OR if you have custom annotation class with other properties...
// (in this case may also want to check class of object first)
YourAnnotationClass *ann = [[mapView selectedAnnotations] objectAtIndex:0];
NSLog(@"ann.title = %@", ann.title);
顺便说一句,您可以使用地图视图的addTarget
委托方法,而不是执行calloutAccessoryControlTapped
并实现自定义方法。点按的注释可在view
参数中找到:
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control
{
NSLog(@"ann.title = %@", view.annotation.title);
}
如果您使用addTarget
,请务必从viewForAnnotation
删除calloutAccessoryControlTapped
。