我已经实现了我的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
答案 0 :(得分:0)
我认为您忘记将代理出口连接到文件所有者。右键单击它并将其委托出口连接到文件所有者。
答案 1 :(得分:0)
可能的解释是没有注释。
检查实际添加注释的代码mapView
。