Все в Java передается по значению, а значения переменных всегда являются примитивами или ссылками на объект.
Я не видел простого способа сделать это в MapKit. В делегате нет mapView: annotationWasTapped:
.
Один из способов сделать это - предоставить собственный подкласс представления аннотации. Пользовательское представление аннотации может захватывать выбор вывода в setSelected: animated:
или в обработчике событий более низкого уровня и передавать эту информацию на ваш контроллер представления.
вы можете использовать наблюдателя для выбранного события:
[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
}
}
}