MKAnnotation未声明

时间:2011-06-24 21:54:16

标签: ios mkmapview mkannotation

我知道之前有一个问题。但是,我觉得有点像菜鸟,因为我无法解决它。

尝试此操作时出现错误:

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>

请帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:6)

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