2011-06-24 56 views
0

我知道之前有个问题。不过,我觉得有点noob,因为我不能解决它。MKAnnotation undeclared

尝试这个当我得到这个错误:

MKAnnotation *annotation = [[MKAnnotation alloc] initWithCoordinate:coordenada title:@"HELLO!"]; 
[mapa addAnnotation:annotation]; 

我也有以下方法:

- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation 
{ 
    MKPinAnnotationView *pin = (MKPinAnnotationView *) [self.mapa dequeueReusableAnnotationViewWithIdentifier: @"asdf"]; 
    if (pin == nil) 
    { 
     pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"asdf"] autorelease]; 
    } 
    else 
    { 
     pin.annotation = annotation; 
    } 
    pin.pinColor = MKPinAnnotationColorRed; 
    pin.animatesDrop = YES; 
    return pin; 
} 

并没有在标题中的#import < MapKit/MKAnnotation.h>

请帮忙吗?

非常感谢!

回答

5

MKAnnotation是一个协议,而不是您可以实例化的类。

您是否定义了自己的类,该类实现了MKAnnotationinitWithCoordinate:title:方法?如果有,请使用该类名称并导入其头文件。

如果您还没有创建自己的注释类,你必须创建一个或者你可以使用预先定义的MKPointAnnotation类(在iOS 4以上版本),而不是:

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
annotation.coordinate = coordenada; 
annotation.title = @"HELLO!"; 
[mapa addAnnotation:annotation]; 
[annotation release]; 

你还需要做到以下几点:

  • 的MapKit框架添加到项目
  • 在文件
  • 设置的顶部添加#import <MapKit/MapKit.h>delegate地图视图中的财产(或IB中的插座)否则viewForAnnotation将不会被调用