iOS Mapkit自定义标注

iOS Mapkit自定义标注,ios,mapkit,Ios,Mapkit,这是一个示例自定义详图索引,我希望获得类似的样式。我曾考虑从MKAnnotation继承,但我不知道如何启动它,我不知道调用的设计是否可以被覆盖 你知道如何使用内部的ui控件实现这个自定义标注吗 编辑:以下是我的代码,来自类似的StackOverflow答案: - (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation { if ([an

这是一个示例自定义详图索引,我希望获得类似的样式。我曾考虑从MKAnnotation继承,但我不知道如何启动它,我不知道调用的设计是否可以被覆盖

你知道如何使用内部的ui控件实现这个自定义标注吗

编辑:以下是我的代码,来自类似的StackOverflow答案:

- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
    if(annotationView)
        return annotationView;
    else
    {
        UIImage *img = [UIImage imageNamed:@"default_thumb.png"];

        MKAnnotationView *annotationView = 
            [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
        annotationView.canShowCallout = YES;
        annotationView.image = img;
        annotationView.draggable = YES;

        /*
        // change left accessory view button with image
        UIImageView *leftAccView = [[UIImageView alloc] initWithImage:img];
        annotationView.leftCalloutAccessoryView = leftAccView;

        //include a right button to show more info         
        UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [rightButton addTarget:self action:@selector(calloutSubMenu:) forControlEvents:UIControlEventTouchUpInside];
        [rightButton setTitle:annotation.title forState:UIControlStateNormal];
        annotationView.rightCalloutAccessoryView = rightButton;         
         */

        return annotationView;
    }
    return nil;
}

// Customize accessory view
- (void)mapView:(MKMapView *)mapview annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    [mapview deselectAnnotation:view.annotation animated:YES];

    PopOverCallout *popOverCallout = [[PopOverCallout alloc]init];

    UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:popOverCallout];

    self.annotationPopoverController = popOver;

    popOver.popoverContentSize = CGSizeMake(500, 500);

    [popOver presentPopoverFromRect:view.bounds inView:view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];    
}
应在触按pin时调用以正确显示标注?但会出现一个空白的常规标注。我可能做错了什么


顺便说一句:UIViewController子类的XIB上只有一个标签,而且几乎是空白的。

在小睡几分钟后找到了答案

作为向导,我只需要覆盖

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

其中显示注释详图索引。再次感谢您的回答,安娜女士。

请参阅。谢谢。我想这是一份精确的副本。如果另一篇文章的答案是我想要的,我可能会删除这个问题。@Anna Karenina-你能告诉我为什么它仍然显示一个常规的标注吗?我在viewForAnnotation中添加了代码Yes,将canShowCallout设置为NO,并实现didSelectAnnotationView而不是CalloutAccessoryControl,如您的答案所示。
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view