调用MKMapView委托的viewForAnnotation方法,但两个参数都是nil

时间:2013-04-17 06:36:32

标签: ios mapkit mkannotation mkannotationview

正如标题所说的方法

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

,mapView1和注释都是nil

我在viewDidAppear方法中以通常的方式添加一个注释:

    [mapView addAnnotation:_a];

尝试了两个注释实现 - 自定义和标准。以下是标准注释用法:

MKPointAnnotation *_aa=[[MKPointAnnotation alloc]init];
CLLocationCoordinate2D coordinates;
coordinates.latitude=39.281520;
coordinates.longitude= -76.580806;
_aa.coordinate= coordinates;
_aa.title=@"annotation 2";

[mapView addAnnotation:_aa];

2 个答案:

答案 0 :(得分:0)

MapAnnotation.h

     #import <Foundation/Foundation.h>
        #import <MapKit/MKAnnotation.h>

        @interface MapAnnotation : NSObject <MKAnnotation>
        @property(nonatomic, assign)    CLLocationCoordinate2D coordinate;
        @property(nonatomic, copy)      NSString *title;
        @property(nonatomic, copy)      NSString *subtitle;

    -(id)initWithCoordinate:(CLLocationCoordinate2D)Region withtitle:(NSString *)Title andSubTitle:(NSString *)SubTitle ;

MapAnnotation.m

@implementation EventAtPlacesAnnotation
@synthesize title = _title, subtitle = _subtitle,coordinate = _coordinate;

 -(id)initWithCoordinate:(CLLocationCoordinate2D)Region withtitle:(NSString *)Title andSubTitle:(NSString *)SubTitle 
{

    self = [super init];
    if(self){
        _title = Title;
        _subtitle = SubTitle;
        _coordinate = Region;
    }
    return self;
}

从使用地图视图的类中分配值

    CLLocationCoordinate2D newCoordinate = CLLocationCoordinate2DMake(40.56, 90.83);

    MapAnnotation *firstannotation = [[MapAnnotation alloc]initWithCoordinate:newCoordinate withtitle:@"Place 1" andSubTitle:@"Near To empire state"];

[myMapview addAnnotation:firstannotation];

答案 1 :(得分:0)

事实证明,在UI构建器中拖动时,某些“魔法”被破坏了。重新构建了屏幕和控制器,现在一切都按照宣传的方式工作。