iOS MapKit MKPointAnnotation添加Disclosure按钮 - 不显示精确定位

时间:2015-09-21 22:10:22

标签: ios xcode mkmapview mapkit mapkitannotation

viewload我正在循环一些数据并添加点数:

    for (id venue in venues) {

        MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
        point.coordinate = coords here;
        point.title = @"title"
        point.subtitle = @"sub";

        [self.map addAnnotation:point];
    }

我尝试做的是在Annotation中添加一个简单的公开按钮。我使用以下内容:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"String"];
    if(!annotationView) {
        annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"String"];
        annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    }

    annotationView.enabled = YES;
    annotationView.canShowCallout = YES;

    return annotationView;
}

然而,在视图加载后,精确点不再显示。如果我删除了viewForAnnotation所有内容,那么我当然没有公开按钮。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

如果您想添加&#34; PIN&#34;对于MapView,您应该使用MKPinAnnotationView,而不是MKAnnotationView

- (MKAnnotationView *)mapView:(MKMapView*)mapView
        viewForAnnotation:(id <MKAnnotation>)annotation
{
  MKPinAnnotationView *annotationView = (MKPinAnnotaionView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"String"];
  if(!annotationView) {
    annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"String"];
    annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
  }
}

披露按钮正在显示。

enter image description here