Как вызвать аннотацию пин-кода при нажатии кнопки в iPhone - PullRequest
1 голос
/ 19 мая 2011

Я не хочу, чтобы пин-код вызывался непосредственно на карте, я хочу, чтобы действие кнопки вызывало аннотацию пин-кода.

Когда я вызываю этот метод при событии нажатия кнопки, мое приложение аварийно завершает работу. Я хочу вызвать аннотацию по нажатию кнопки. Могу ли я вызвать этот метод все на кнопку?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    MKPinAnnotationView *pin = (MKPinAnnotationView *) [self.map dequeueReusableAnnotationViewWithIdentifier: @"restMap"];
    if (pin == nil) {
        pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"restMap"] autorelease];
    } else {
        pin.annotation = annotation;
    }
    pin.pinColor = MKPinAnnotationColorRed
    pin.canShowCallout = YES;
    pin.animatesDrop = NO;
    UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    NSInteger annotationValue = [self.annotations indexOfObject:annotation];
    detailButton.tag = annotationValue;
    [detailButton addTarget:self action:@selector(showDetailView:) forControlEvents:UIControlEventTouchUpInside];
    pin.rightCalloutAccessoryView = detailButton;
    return pin;
}  

1 Ответ

0 голосов
/ 19 мая 2011

Метод, который вы пытаетесь вызвать, является методом делегата mapView и должен вызываться только вашим MapView. Этот метод предназначен только для предоставления представления аннотации «по требованию», когда это необходимо для mapView. То есть Когда аннотация находится или собирается переместиться в видимую область mapView.

Вам необходимо добавить объект аннотации в ваш mapView. Этот объект должен соответствовать протоколу MKAnnotation. http://developer.apple.com/library/ios/documentation/MapKit/Reference/MKAnnotation_Protocol/

Вы добавите объект в mapView, вызвав [yourMapView addAnnotation: yourAnnotationObject] в методе IBAction, который вызывается при нажатии вашей кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...