我使用的是MKMapView
包含几个MKAnnotation
引脚。
在地图上面,我是呈现出UITableView
与详细信息MKAnnotation
引脚。
我的问题:当我选择引脚,我想选择相应的表格单元格。 为此,我想如果选择引脚捕捉事件/委托。 我说的不是调用标注附件
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
刚刚更新到这一点 - 在iOS 4的存在是可以用来跟踪注释选择和取消选择MKMapViewDelegate方法:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
你可以使用一个观测器的选择 - 事件:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:@"ANSELECTED"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSString *action = (NSString*)context;
if([action isEqualToString:@"ANSELECTED"]){
BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
if (annotationAppeared) {
// clicked on an Annotation
}
else {
// Annotation disselected
}
}
}
我还没有看到一个简单的方法在MapKit做到这一点。 有没有mapView:annotationWasTapped:
对委托。
这样做的一个方法是提供自己的注解视图子类。 自定义注解视图可以捕捉到引脚选择setSelected:animated:
或在一个较低的水平事件处理和传递信息到你的视图控制器。