Как распознать, какой пин был повернут - PullRequest
0 голосов
/ 27 февраля 2012

Я получил приложение с MKMapView и большим количеством контактов на этой карте.

Каждый контакт получил rightCalloutAccessoryView.Я создаю его таким образом:

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView = rightButton;

Как мне узнать, какой контакт был повернут?Thnx

1 Ответ

10 голосов
/ 27 февраля 2012

В методе 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...