我的 MKAnnotations 有一个自定义类,我想覆盖默认mapView:viewForAnnotatation
方法,以便可以在标注中添加额外信息。当我在代码中设置我的委托时(根据下面的代码),注释会放在地图上并且是可选择的,但我mapView:viewForAnnoation
的从来没有被调用过。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
NSLog(@"viewForAnnotation: called");
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapPin"];
if(!aView){
aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"mapPin"];
}
aView.annotation = annotation;
return aView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.mapView.delegate = self;
}
我知道正在设置委托,因为我可以覆盖该方法-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
,并且在选择注释时会看到 NSLog。
当我从在代码中设置委托更改为在情节提要中设置它时,该方法被调用(NSLog(@"viewForAnnotation: called"); 语句出现)但注释不会出现在地图上,有时会出现此错误:
<Error>: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedImageBlockData: bad readSession [0x8618480]