J'ai des épingles que l'utilisateur peut ajouter. Dans la légende, il y a un bouton. Lorsque l'utilisateur appuie sur le bouton, je veux une nouvelle broche à cet endroit, et je veux me débarrasser de la broche que l'utilisateur a appuyé (différents types de broches).Impossible de supprimer des annotations
Fondamentalement, la première broche est draggable, et lorsque l'utilisateur a trouvé un emplacement approprié, ils vont le "verrouiller". (la broche verrouillée agit différemment de quelques façons, c'est pourquoi j'ai besoin de remplacer l'ancienne broche)
de toute façon, c'est la méthode par laquelle je fais mon traitement. Quand j'arrive à la [mapView removeAnnotation: view.annotation]; tout ce que je reçois est "Signal reçu par le programme:" EXC_BAD_ACCESS "."
Quelqu'un peut-il m'aider ici? (Le problème n'est pas que la nouvelle annotation n'apparaisse pas, comme cela apparaît, le problème est que l'ancienne annotation ne disparaît pas). EDIT: Code fixe selon la suggestion.
- (void) mapView:(MKMapView *)MapView
annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control {
LockedPotholeAnnotation *annotation = [[[LockedPotholeAnnotation alloc] initWithCoordinate:view.annotation.coordinate addressDictionary:nil]autorelease];
NSString *titleString = [NSString stringWithFormat:@"Pothole at %.4f, %.4f", view.annotation.coordinate.latitude, view.annotation.coordinate.longitude];
annotation.title = titleString;
[mapView addAnnotation:annotation];
//[annotation release];
NSLog(@"Added Pin");
NSLog(@"VA: %@", [view.annotation class]);
[mapView removeAnnotation:view.annotation];
//[mapView removeAnnotations:mapView.annotations];
[mapView setNeedsDisplay];
}
Ahh je peux voir l'erreur. Mis à part cela, je ne semble pas avoir de problème avec la nouvelle annotation. la nouvelle annotation "verrouillée" apparaît, mais l'ancienne ne disparaît pas, et c'est en fait le problème. –
@DJ Dans ce cas, il est difficile de dire - le code ne semble pas manifestement faux, donc le problème pourrait être ailleurs. Vérifiez que la valeur passée dans 'view' est bien la bonne et que' view.annotation' est dans le tableau 'annotations' de la vue de carte avant d'essayer de supprimer. Est-ce que le retrait fonctionne si vous le faites * avant * l'ajout de la nouvelle annotation? Si vous n'en ajoutez pas du tout? Que se passe-t-il lorsque vous supprimez tout, comme dans la ligne commentée? Etc - désolé je ne peux pas suggérer quelque chose de plus utile que la corvée de débogage de base ... – walkytalky
Il s'avère que l'endroit d'origine où j'ai ajouté des annotations, j'ai également eu cette version supplémentaire là-bas. Qui l'a vissé quand j'ai essayé d'enlever cette annotation. Supprimer cette ligne l'a corrigé. Merci beaucoup. –