viewForAnnotation方法从未调用过

时间:2013-01-27 18:05:22

标签: ios mkmapview mkmapviewdelegate

我已经实现了我的MKMapViewDelegate,但由于某种原因,我永远不会调用viewForAnnotation方法。

我可以确认注释是否显示在MapView上。

我在我的方法中添加了NSLog(),并且永远不会打印日志记录。

我知道我的班级肯定是MKMapViewDelegate,因为打印出其他NSLog()方法中的MKMapViewDelegate语句。

我还在self.mapView.delegate = self

中设置viewDidLoad
@interface MapViewController () <MKMapViewDelegate>
    @property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end

@implementation MapViewController

    @synthesize mapView = _mapView;
    @synthesize annotations = _annotations;


    -(void)setMapView:(MKMapView *)mapView
    {
        _mapView = mapView;
        [self updateMapView];
    }

    -(void)setAnnotations:(NSArray *)annotations
    {
        _annotations = annotations;
         [self updateMapView];
    }


    -(MKAnnotationView *)mapView:(MKMapView *)mapView
               viewForAnnotation:(id<MKAnnotation>)annotation
    {
     // For some reason this method is never called!!!!!!
     NSLog(@"This logging statement is never printed");

   }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.mapView.delegate = self;
    }

    - (void)updateMapView
    {
        if (self.mapView.annotations) [self.mapView removeAnnotations:self.mapView.annotations];
        if (self.annotations) [self.mapView addAnnotations:self.annotations];
    }

@end

2 个答案:

答案 0 :(得分:0)

我认为您忘记将代理出口连接到文件所有者。右键单击它并将其委托出口连接到文件所有者。

答案 1 :(得分:0)

可能的解释是没有注释。

检查实际添加注释的代码mapView