何が間違っているのかわかりませんが、うまくいきません。
私mapView: viewForAnnotation:
はこのように見えます:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"ImageMapView"];
if (!aView)
{
aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ImageMapView"];
aView.canShowCallout = YES;
aView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
aView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
}
[(UIImageView *)aView.leftCalloutAccessoryView setImage:nil];
aView.annotation = annotation;
return aView;
}
したがって、すべての新しい注釈は、左側のコールアウトの空白の画像ビューで始まります。
コールアウトに触れると、次のコードが実行されます。
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
//loading an image
[(UIImageView *)view.leftCalloutAccessoryView setImage:image];
}
そして、ロギングの助けを借りて、画像のURLとデータは問題なく、画像自体はnilではないことがわかりましたが、左側のコールアウトには何も表示されません。
誰かが私にこの問題の原因を突き止める方法を提案できますか?
編集
いくつかのログを追加したので、何が起こっているのかを確認できます。
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
UIImage *image = [self.delegate imagesMapViewController:self thumbnailForAnnotation:view.annotation];
NSLog(@"Image was: %@", [(UIImageView *)view.leftCalloutAccessoryView image]);
NSLog(@"Image received: %@", image);
[(UIImageView *)view.leftCalloutAccessoryView setImage:image];
NSLog(@"Image became: %@", [(UIImageView *)view.leftCalloutAccessoryView image]);
}
そして私は次の出力で終わります:
Image was: (null)
Image received: <UIImage: 0x7933470>
Image became: <UIImage: 0x7933470>
そのため、画像は設定されていますが、表示されていません。理由はわかりません。また、最初のログ情報は2番目の注釈ビューがテープに記録された後にのみ表示されるため、最初の注釈ビューが呼び出していないことは非常にまれです。mapView: didDeselectAnnotationView:
入れても
[(UIImageView *)aView.leftCalloutAccessoryView setImage:[self.delegate imagesMapViewController:self thumbnailForAnnotation:aView.annotation]];
それ以外の
[(UIImageView *)aView.leftCalloutAccessoryView setImage:nil];
左のmapView: viewForAnnotation:
すべてのコールアウトアクセサリには、必要な画像がありますが、オフソースで画像をオンデマンドでダウンロードしたい