我在此地图上找到了一个带有MKMapView
和大量图钉的应用。
每个引脚都得到rightCalloutAccessoryView
。我以这种方式创建它:
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView = rightButton;
我怎么知道,哪个针被窃听了? n
最佳答案
在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
。