Моя карта работает нормально с несколькими аннотациями в NSMuttableArray, MyAnnotations отображаются нормально с заголовком и подзаголовком и правой кнопкой вызова, связанной с представлением с действием @selector showDetails.Однако, как мне загрузить детали для каждой аннотации в это представление?то есть, если кто-то нажимает на Эмпайр Стейт Билдинг, он отображает информацию о себе в этом представлении, а кто-то нажимает на Крайслер, строящий его, а также отображает сведения о себе в этом представлении.Выясните, вот фрагмент моего rootviewcontroller.m
, если это помогает, все мои аннотации названы так и так далее и так далее
[mapView addAnnotation:myAnnotation1];
[mapView addAnnotation:myAnnotation2];
[mapView addAnnotation:myAnnotation3];
[mapView addAnnotation:myAnnotation4];
с соответствующими
MyAnnotation* myAnnotation1=[[MyAnnotation alloc] init];
myAnnotation1.coordinate=theCoordinate1;
myAnnotation1.title=@"Asda";
myAnnotation1.subtitle=@"Kimberley Way, TN240SE";
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
NSLog(@"welcome into the map view annotation");
// if it's the user location, just return nil.
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
// try to dequeue an existing pin view first
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView* pinView = [[[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
pinView.animatesDrop=YES;
pinView.canShowCallout=YES;
pinView.pinColor=MKPinAnnotationColorPurple;
//differnt colored pins based on title name
if ([[annotation title] isEqualToString:@"Asda"])
pinView.pinColor = MKPinAnnotationColorRed;
else if ([[annotation title] isEqualToString:@"Ashford Football Club"])
pinView.pinColor = MKPinAnnotationColorGreen;
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton setTitle:annotation.title forState:UIControlStateNormal];
[rightButton addTarget:self
action:@selector(showDetails:)
forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView = rightButton;
UIImageView *profileIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"profile.png"]];
pinView.leftCalloutAccessoryView = profileIconView;
[profileIconView release];
return pinView;
}
-(IBAction)showDetails:(id)sender{
NSLog(@"Annotation Click");
self.userProfileVC.title=((UIButton*)sender).currentTitle;
[self.navigationController pushViewController:self.userProfileVC animated:YES];
}
- (void)dealloc {
[super dealloc];
}
@end