Ok, więc mam ten problem. Co chcę zrobić to ręcznie dodać wiele adnotacji na mapie. Kiedy dodać tylko jedną adnotację, że działa bez zarzutu. Krople pin, można kliknąć na nim, aby zobaczyć jego objaśnienie, życie jest dobre.
Problem pojawia się, gdy chcę dodać więcej niż jeden. Kiedy dodać drugi, nagle kołek na nie są prawidłowo kolorowe (czyli w zależności od ich wielkości, powinny one być pewien kolor, ale są teraz zarówno to samo ...), a co ważniejsze, po kliknięciu na nich, aby ich objaśnienie, aplikacja wywala z exex_bad_access. I naprawdę nie mam pojęcia, co się dzieje, może Dodaję zbyt wiele poglądów na mapie? Ale to tylko 9 szpilki i kołki sami dodawać dobrze. Oto mój kod ...
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *stops = [[NSMutableArray alloc] init]; //Get list of all the stops available
Bus *bus1 = [[Bus alloc] init]; // Bus 1 holds the stops
stops = [bus1 returnStops];
for (NSString *stop in stops) //Go through each stop to add annotation to map
{
Bus *bus2 = [bus1 initWithStop:stop]; //Create an instance of bus with a given stop
MapAnnotation *eqAnn = [MapAnnotation annotationWithBus:bus2];
[self.mapView addAnnotation:eqAnn]; //Add the annotation to the map
//[eqAnn release];
//[bus2 release];
}
[self recenterMap];
[stops release];
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *view = nil;
if(annotation != mapView.userLocation) {
MapAnnotation *eqAnn = (MapAnnotation*)annotation;
view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@busLoc];
if(nil == view) {
view = [[[MKPinAnnotationView alloc] initWithAnnotation:eqAnn
reuseIdentifier:@busLoc] autorelease];
}
CGFloat magnituide = [eqAnn.bus.magnitude floatValue];
if(magnituide >= .80f) {
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorRed];
} else if(magnituide >= .60f) {
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorPurple];
} else
{
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorGreen];
}
[(MKPinAnnotationView *)view setAnimatesDrop:YES];
[view setCanShowCallout:YES];
}
return view;
}
nawet próbował usuwania drugą funkcję, ale nie zrobił nic.
Dzięki za pomoc! PS I należy również dodać, nie ma zwykle jeden lub dwa piny wyjścia z 9, które działa po kliknięciu adnotacji ...
I nawet jeśli próby ręcznego zaledwie dwóch adnotacji ręcznie w programie (czyli usunąć pętla), to nadal nie powiedzie, a kolor nadal jest zły ...













