2013-04-04 3 views
2

Итак, у меня есть объект NSArray Dictionary, содержащий кучу данных JSON. Используя эти данные, я заполняю карту связкой MKPointAnnotations, каждая из которых представляет данные в данном словаре. Когда пользователь нажимает одну из точек аннотации, как я могу определить, какая точка была нажата, чтобы я мог связать правильный набор данных с этой точкой?iOS - определение, какая MKPointAnnotation выбрана

ответ

3

Вам нужно создать свой собственный класс аннотаций, так что вы можете хранить дополнительную информацию в каждой аннотации. Смотрите мой ответ здесь:

https://stackoverflow.com/a/15554322/341994

Обратите внимание на ссылки, представленные там! Моя книга говорит об этом в глубине:

http://www.apeth.com/iOSBook/ch34.html#_annotations

И вы можете скачать рабочий проект, который развивает эту мысль:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch34p848map/p707p723map

+0

Как бы я тогда получить экземпляр класса, когда '- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id ) вызывается метод аннотации? –

+0

Вы не получаете экземпляр, вы его создаете. Посмотрите на ссылки, которые я привел в другом ответе. Моя книга содержит полное обсуждение, и я предоставляю загружаемые проекты, которые показывают, что делать. – matt

+0

Получил это. Взял меня секунду, чтобы понять, как все складывается вместе. Большое спасибо! –

1

Я думаю, что этот метод делегата поможет вам это сделать.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    NSLog(@"Tapped on: %@", view.annotation.title); 
} 

Также вы можете установить метки на каждой аннотации и убедиться, что внутри calloutAccessoryControlTapped делегата с помощью view.tag.

Пожалуйста, обратитесь MKMapViewDelegate более

Смежные вопросы