Xcode MapView selectAnnotation - но какой? - PullRequest
0 голосов
/ 28 января 2012

Добавление аннотаций на карту, подобную этой

MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Title" andSubTitle:@"Sub Title" andCoordinate:location];
[mapView addAnnotation:newAnnotation];
[newAnnotation release];

Таблица слева показывает список ресторанов. При нажатии на один из них вызывается «configureView», карта масштабируется до этой аннотации и открывает всплывающее окно аннотации.

[mapView setRegion:region animated:YES]; 
[mapView setDelegate:self];
[self.mapView selectAnnotation:xxx animated:YES];

Как мне определить конкретную аннотацию? Каким должен быть «ххх»?

1 Ответ

0 голосов
/ 28 января 2012

«xxx» должен быть указателем на объект аннотации.Вы создаете аннотации, которые отделены от ваших данных.Это нормально, но это означает, что вам придется проделать дополнительную работу, чтобы отслеживать аннотации и их соответствие ресторанам.Возможно, более типичная вещь - сделать так, чтобы ваш класс Restaurant принял аннотацию MKMap.Затем, когда пользователь выбирает ресторан на вашем столе, вы просто должны выяснить, какой ресторан он выбрал.Затем вы можете:

[self.mapView selectAnnotation:theSelectedRestaurant animated:YES];

Если вы хотите продолжать хранить аннотации отдельно, вы можете сохранить их в словаре, где ключи - рестораны, или, возможно, какой-то уникальный идентификатор, соответствующий каждому ресторану:*

[self.mapView selectAnnotation:[annotationDict objectForKey:selectedRestaurant] animated:YES];

или:

[self.mapView selectAnnotation:[annotationDict objectForKey:selectedRestaurant.id] animated:YES];
...