If you use custom annotation views, you can add an observer for the selected property, which will act as a delegate when the contact is selected.
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ MKAnnotation *annview = ...code to either dequeue or create new object... [annview addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:@"selectedmapannotation"]; return annview; }
then you can control the selected state with
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
The answer related to Mugunth Kumar will also give you the desired results, you just mentioned delegation as a function in your question.
EDIT:
Here is an example of the contents of a watch function: VALUEForKeyPath: ofObject: change: context: method
NSString *action = (NSString*)context; if([action isEqualToString:@"selectedmapannotation"]){ BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue]; MKAnnotationView *ann = (MKAnnotationView *)object; if (annotationAppeared) {
acqu13sce
source share