Я установил NSMutableArray объектов, полученных из класса, который соответствует протоколу MKAnnotation. У меня есть заголовок установки и субтитры для аннотации и успешно добавлены в MKMapView, используя:
[[self customMapView] addAnnotations:locationArray];
То, что я хочу сделать сейчас, - это оживить выпадение булавок, изначально я думал, что могу сделать это с помощью Option1, используя все это работает, но булавки не делают анимированное падение.
// Option1
// WORKS FOR: pinColor YES, animatesDrop NO, LABEL YES
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKPinAnnotationView *eachView in views) {
[eachView setAnimatesDrop:YES];
[eachView setPinColor:MKPinAnnotationColorPurple];
}
}
Мое следующее предположение состояло в том, чтобы попробовать Option2, это работает очень хорошо, но у меня есть две проблемы. Заголовок и субтитры не отображаются, мой пользовательский объект аннотации передается (я вижу его в отладчике), но содержащаяся информация не переводит его в новый pin
. Во-вторых, это создает новый набор MKAnnotationViews, что происходит со старыми, есть и проблемы с утечками памяти?
// Option2
//FOR: pinColor YES, animatesDrop YES, LABEL NO
- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation {
MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"];
if (pin == nil) {
pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"annotation_ID"] autorelease];
} else {
pin.annotation = annotation;
}
pin.pinColor = MKPinAnnotationColorRed;
pin.animatesDrop = YES;
return pin;
}
EDIT: я решил пропустить заголовок и subTitle, добавив pin.canShowCallout = YES;