2011-06-20 10 views
7

po tym, jak spędziłem 2 dni na szukaniu błędu, muszę poprosić o pomoc tutaj. Mam MapViewController i umieścić kilka pinów na mapie. Skopiowałem większość kodu z MapCallouts i WeatherMap z próbek kodu jabłkowego.MKAnnotationView viewForAnnotation nigdy nie zadzwonił pod numer

wydaje mi się, że usunąłem lub straciłem istotne części. wydaje się, że nie ma połączenia między MapViewController i następujący kod

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    NSLog(@"MKAnnotationView"); 
    return nil; 
} 

ustawienie adnotacji wygląda i działa dobrze:

- (void)createPoi:(CLLocationCoordinate2D)theCoordinate 
{ 
    NSLog(@"createPoi"); 

    RandomAnnotation *randomAnnotation = [[RandomAnnotation alloc] init]; 
    [randomAnnotation setTheCoordinate:theCoordinate]; 
    [randomAnnotation setTheTitle:@"bla"]; 
    [randomAnnotation setTheSubTitle:@"bla"]; 
    [self.mapAnnotations insertObject:randomAnnotation atIndex:kRandomAnnotationIndex]; 
    [randomAnnotation release]; 
    [self.mapView addAnnotation:[self.mapAnnotations objectAtIndex:kRandomAnnotationIndex]]; 
} 

I can not dowiedzieć się, co się stało. czy ktokolwiek mógłby mi podpowiedzieć, czego brakuje? Muszę przyznać, że nie mam żadnego doświadczenia z układem delegatów.

Odpowiedz

16

Upewnij się, że została ustawiona właściwość delegate mapy widoku.

Jeśli mapa jest tworzona w IB, kliknij ją prawym przyciskiem myszy i podłącz jej punkt dostępu do Właściciela pliku.

Jeśli mapa jest tworzony w kodzie, ustawić delegata po utworzeniu widoku mapy:

mapView.delegate = self; 
+0

aah. tak! Zapomniałem zahaczyć mapę w IB na delegata właściciela pliku. wstyd mi: -/ problem rozwiązany! bardzo dziękuję za szybką pomoc !!! :-) – rockstarberlin

2

W ncurses.h gdzie MKMapView jest zadeklarowana i gdzie metoda viewForAnnotation stwierdzenie, należy dodać MKMapViewDelegate w lista protokołów klasa powinna zawierać:

@interface myViewController : UIViewController <MKMapViewDelegate> { 
    MKMapView *_mapView; 
} 

Następnie w metodzie viewDidLoad, należy dodać

_mapView.delegate = self; 

Możesz również przypisać delegata mapView w narzędziu do budowania interfejsu, jeśli zrobiłeś rzeczy, które go używają!

Powiązane problemy