zeigen Sie eine andere Ansicht als Karte, annotation angeklickt werden
Habe ich eine Karte mit nur einer Anmerkung.Habe ich eine einfache Klasse, die ich möchte es zu zeigen, wenn der Benutzer auf die Beschriftung.Das problem ist, dass wenn ich auf die Anmerkung, passiert nichts.
Hier ist mein code:
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark{
NSLog(@"Reverse Geocoder completed");
mPlacemark=placemark;
[mapView addAnnotation:placemark];
}
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.animatesDrop=TRUE;
//create UIButton for annotation
UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
//NSInteger annotationValue = [self.annotations indexOfObject:annotation];
[detailButton addTarget:self action:@selector(showDetailView:) forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView=detailButton;
return annView;
}
-(void)showDetailView:(id)sender{
NSLog("inside the stupid method");
MyDetailViewController *detailView=[[MyDetailViewController alloc] initWithNibName:@"MyDetailViewController" bundle:nil];
[[self navigationController] pushViewController:detailView animated:YES];
[detailView release];
}
Meine showDetailView
- Funktion nie aufgerufen wird.Bitte helfen Sie mir.Ich bin neu in der iphone und ich könnte vergessen, eine einfache Sache.Dank
Immer noch nicht funktioniert!!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie zuerst, dass die map-Ansicht
delegate
gesetzt ist, andernfalls wird IhrviewForAnnotation
Methode wird nicht aufgerufen.Nächsten, der Zubehör-button erscheint in der Anmerkung die Legende wird nur angezeigt, wenn Sie
canShowCallout
:Nächsten, anstatt Ihre eigene Methode, mit der die button-Aktion, es ist viel besser, verwenden Sie die Kartenansicht eigenen
calloutAccessoryControlTapped
delegate-Methode, die aufgerufen wird, wenn klopfen Zubehör:Entfernen Sie die
[detailButton addTarget...
Linie vonviewForAnnotation
.Beachten Sie auch Ihre
NSLog
im showDetailView Methode fehlt die führende@
die zu einem Absturz führen, wenn die Methode nicht aufgerufen.Andere Sache ist, dass Sie verwenden sollten
dequeueReusableAnnotationViewWithIdentifier
imviewForAnnotation
zu aktivieren Beschriftungsansicht re-use.Beispiel, wie verlangt:
callOutAccessoryControlTapped
Methode aufgerufen wird, aber nichts ist passiert, die detaillierte Ansicht nicht zeigte, ich die Arbeit mit StoryBoardsOk. Wenn Sie mit storyboards, erstellen Sie einen übergang zwischen den map-view-controller und dann wo der code unten gibt:
Stattdessen den folgenden code verwenden:
Diese geben Ihnen die Bewegung, um die detaillierte Ansicht.
schreiben Sie Ihre Funktion so:
haben Sie, um die Karte zu delegieren, um selbst, wie diesem,
mapview.delegate=self;
(wenn Ihr den Aufruf der Methode in der gleichen Seite)wenn du nicht zuordnen des Delegaten im code der jeweiligen Methoden nicht aufgerufen werden, so prüfen Sie, ob Sie der oben genannten Zeile.
Ersetzen
-(IBAction)showDetailView:(UIView*)sender
mit folgenden...