Добавление дополнительной кнопки представления к аннотации вызова MKMapView? - PullRequest
10 голосов
/ 16 сентября 2009

Я недавно встречал этот сайт , и я пытался добавить к моему вызову просмотр кнопки (с картинки).

Код на примере веб-сайтов работает просто отлично, но когда я попытался добавить тот же код в свой проект, я не получил те же результаты.

Очевидно, что я что-то упустил, но я не могу с этим разобраться!

Вот мой код для аннотирования:

- (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;
}

Любая помощь будет принята с благодарностью! :)

Ответы [ 3 ]

15 голосов
/ 08 октября 2009

Этот парень использует собственное изображение для имитации раскрытия деталей. Вы можете довольно легко получить стандартное раскрытие деталей:

[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
11 голосов
/ 15 января 2010

Вместо установки цели, как вы сделали здесь:

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

Вы можете использовать делегата по умолчанию:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
4 голосов
/ 16 сентября 2009

Извините, что отвечаю на мой вопрос, но это было решено путем установки делегата MKMapView в ViewController. Фу, мне понадобилось время, чтобы понять это, и это так просто !!

...