2009-09-16 4 views
10

Ostatnio natknąłem się na this website i próbowałem dodać do mojego wywołania widok przycisku (z obrazu).Dodawanie przycisku widoku akcesoriów do wywołania funkcji MKMapView?

Kod na stronie internetowej działa dobrze, ale kiedy próbowałem dodać ten sam kod do mojego projektu, nie otrzymuję takich samych wyników.

Jest oczywiście coś, co przeoczyłem, ale nie mogę tego wyeliminować!

Oto mój kod do nanoszenia:

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{ 
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]; 
    annView.pinColor = MKPinAnnotationColorGreen; 

    UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    advertButton.frame = CGRectMake(0, 0, 23, 23); 
    advertButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
    advertButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 

    [advertButton setImage:[UIImage imageNamed:@"button_right.png"] forState:UIControlStateNormal]; 
    [advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside]; 

    annView.rightCalloutAccessoryView = advertButton; 

    annView.animatesDrop=TRUE; 
    annView.canShowCallout = YES; 
    annView.calloutOffset = CGPointMake(-5, 5); 
    return annView; 
} 

Każda pomoc będzie mile widziana! :)

+0

Niestety, Dostarczony link jest martwy –

Odpowiedz

4

Przepraszamy za własne pytanie, ale zostało to rozwiązane przez ustawienie delegata MKMapView na ViewController. Uff, zajęło mi trochę czasu, aby to rozgryźć i jest takie proste !!

15

Ten gość używa niestandardowego obrazu do naśladowania ujawnienia szczegółów. rzeczywiście można dostać standardowego szczegółowości ujawnienia dość łatwo:

[UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
+0

Ah dzięki, zawsze przydatny do robienia rzeczy, które mają być zrobione :) –

11

Zamiast ustawiania cel jak ty tutaj:

[advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside]; 

można użyć domyślnego Delegat:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control