Xcode 自定义注释标注不显示注释?

Xcode 自定义注释标注不显示注释?,xcode,mkmapview,mkannotation,mkannotationview,mapkit,Xcode,Mkmapview,Mkannotation,Mkannotationview,Mapkit,因此,默认的红色注释在模拟器中显示得非常好,但是自定义注释MyPin不会显示。我觉得这和NSMutableArray有关? 如果是这样的话,我不太确定有什么办法可以绕过它 希望论坛上有一位大师能给我们一些启示(希望这不是一个真正的新手错误,我在过去的两个小时里一直在研究这个问题,但我什么也看不到。) #导入“UKFlightsEuropeMap.h” #导入“Annotation.h” @接口UKflightSeRopeMap() @结束 @UKFlightsEuropeMap的实现 @合成eu

因此,默认的红色注释在模拟器中显示得非常好,但是自定义注释MyPin不会显示。我觉得这和NSMutableArray有关? 如果是这样的话,我不太确定有什么办法可以绕过它

希望论坛上有一位大师能给我们一些启示(希望这不是一个真正的新手错误,我在过去的两个小时里一直在研究这个问题,但我什么也看不到。)

#导入“UKFlightsEuropeMap.h”
#导入“Annotation.h”
@接口UKflightSeRopeMap()
@结束
@UKFlightsEuropeMap的实现
@合成europeMapView;
//定义长和宽。
#定义欧洲纬度47.3690;
#定义欧洲经度8.5380;
#定义伦敦纬度51.5171;
#定义伦敦经度0.1062;
#定义巴黎纬度48.8742;
#定义巴黎经度2.3470;
#定义布鲁塞尔纬度50.75;
#定义布鲁塞尔经度4.53333;
#确定柏林纬度52.5;
#定义柏林经度13.35;
#定义_跨度0.01f;
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
如果(自我){
//自定义初始化
}
回归自我;
}
-(无效)viewDidLoad
{
[超级视图下载];
[europeMapView setDelegate:self];
//加载视图后执行任何其他设置。
//创建我的区域
MK协调区域myRegion;
//居中
位置协调中心;
中心纬度=欧洲纬度;
center.longitude=欧洲经度;
//设置跨度(缩放)
Mk坐标跨度;
span.latitudeDelta=_span;
span.longitudeDelta=_span;
myRegion.center=中心;
myRegion.span=span;
//让我们的欧洲观
[europeMapView setRegion:myRegion动画:是];
//注释
NSMUTABLEARRY*位置=[[NSMUTABLEARRY alloc]init];
CLLOCATION坐标2D定位;
注释*myAnn;
//伦敦注释
myAnn=[[Annotation alloc]init];
location.latitude=伦敦纬度;
location.longitude=伦敦经度;
myAnn.坐标=位置;
myAnn.title=@“伦敦”;
myAnn.subtitle=@“伦敦城”;
[对象:myAnn];
//巴黎注释
myAnn=[[Annotation alloc]init];
location.latitude=巴黎纬度;
location.longitude=巴黎经度;
myAnn.坐标=位置;
myAnn.title=@“巴黎”;
myAnn.subtitle=@“爱之城”;
[对象:myAnn];
//布鲁塞尔注释
myAnn=[[Annotation alloc]init];
location.latitude=布鲁塞尔纬度;
location.longitude=布鲁塞尔经度;
myAnn.坐标=位置;
myAnn.title=@“布鲁塞尔”;
myAnn.subtitle=@“布鲁塞尔”;
[对象:myAnn];
//柏林注释
myAnn=[[Annotation alloc]init];
location.latitude=柏林纬度;
location.longitude=柏林经度;
myAnn.坐标=位置;
myAnn.title=@“柏林”;
myAnn.subtitle=@“柏林”;
[对象:myAnn];
[self.europeMapView addAnnotations:位置];
}
//自定义注释标注。
-(MKAnnotationView*)europeMapView:(MKMapView*)europeMapView视图用于注释:(id)注释{MKPinAnnotationView*MyPin=[[MKPinAnnotationView alloc]initWithAnnotation:注释重用标识符:@“当前”];
MyPin.pinColor=MKPinAnnotationColorPurple;
UIButton*advertButton=[UIButton Button类型:UIButtonTypedTailDisclosure];
[advertButton addTarget:self action:@selector(按钮:)for ControlEvents:UIControlEventTouchUpInside];
MyPin.rightCalloutAccessoryView=广告按钮;
MyPin.draggable=否;
MyPin.highlighted=是;
MyPin.animatesDrop=TRUE;
MyPin.canShowCallout=是;
返回MyPin;
}
-(无效)按钮:(id)发送者{
NSLog(@“按钮按下”);
}
-(无效)未收到记忆警告
{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
@结束

非常感谢。

由于您更改了名称,因此未调用您的
注释视图

应该是
–地图视图:视图注释:
但是你的名字叫
-europeMapView:viewForAnnotation:

如果你改成这个,你会更成功

-(MKAnnotationView *) mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];
    MyPin.pinColor = MKPinAnnotationColorPurple;

    UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [advertButton addTarget:self action:@selector(button:) forControlEvents:UIControlEventTouchUpInside];

    MyPin.rightCalloutAccessoryView = advertButton;
    MyPin.draggable = NO;
    MyPin.highlighted = YES;
    MyPin.animatesDrop = TRUE;
    MyPin.canShowCallout = YES;


    return MyPin;

}
-(MKAnnotationView*)映射视图:(MKMapView*)aMapView视图用于注释:(id)注释
{
MKPinAnnotationView*MyPin=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:@“current”];
MyPin.pinColor=MKPinAnnotationColorPurple;
UIButton*advertButton=[UIButton Button类型:UIButtonTypedTailDisclosure];
[advertButton addTarget:self action:@selector(按钮:)for ControlEvents:UIControlEventTouchUpInside];
MyPin.rightCalloutAccessoryView=广告按钮;
MyPin.draggable=否;
MyPin.highlighted=是;
MyPin.animatesDrop=TRUE;
MyPin.canShowCallout=是;
返回MyPin;
}

此外,您还可以删除
addTarget
并实现它,它将为您提供点击的annotationView,从中您可以获得当时显示的批注,从而确定要显示的广告类型。

您的
viewforAnnotation
不会被调用,因为您更改了名称

应该是
–地图视图:视图注释:
但是你的名字叫
-europeMapView:viewForAnnotation:

如果你改成这个,你会更成功

-(MKAnnotationView *) mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];
    MyPin.pinColor = MKPinAnnotationColorPurple;

    UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [advertButton addTarget:self action:@selector(button:) forControlEvents:UIControlEventTouchUpInside];

    MyPin.rightCalloutAccessoryView = advertButton;
    MyPin.draggable = NO;
    MyPin.highlighted = YES;
    MyPin.animatesDrop = TRUE;
    MyPin.canShowCallout = YES;


    return MyPin;

}
-(MKAnnotationView*)映射视图:(MKMapView*)aMapView视图用于注释:(id)注释
{
MKPinAnnotationView*MyPin=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:@“current”];
MyPin.pinColor=MKPinAnnotationColorPurple;
UIButton*advertButton=[UIButton Button类型:UIButtonTypedTailDisclosure];
[advertButton addTarget:self action:@selector(按钮:)for ControlEvents:UIControlEventTouchUpInside];
MyPin.rightCalloutAccessoryView=广告按钮;
MyPin.draggable=否;
MyPin.highlighted=是;
MyPin.animatesDrop=TRUE;
MyPin.canShowCallout=是;
返回MyPin;
}
此外,您还可以删除
addTarget
并实现它,它为您提供了