10

我最近遇到了这个网站,我一直在尝试在我的调用视图中添加一个按钮(来自图像)。

网站示例上的代码工作得很好,但是当我尝试将相同的代码添加到我的项目中时,我没有得到相同的结果。

显然我错过了一些东西,但我似乎无法解决这个问题!

这是我的注释代码:

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

任何帮助,将不胜感激!:)

4

3 回答 3

15

那家伙正在使用自定义图像来模仿细节披露。您实际上可以很容易地获得标准的详细信息披露:

[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
于 2009-10-08T19:03:07.933 回答
11

而不是像您在此处那样设置目标:

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

您可以使用默认委托:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
于 2010-01-15T00:30:32.333 回答
4

很抱歉回答我自己的问题,但这已通过将 MKMapView 的委托设置为 ViewController 来解决。唷,我花了一段时间才弄清楚,它是如此简单!

于 2009-09-16T15:27:56.160 回答