メソッド名が間違っています。これは、資本V
とmapView
する必要があります:
- (MKAnnotationView *)mapView:(MKMapView *)sender
viewForAnnotation:(id <MKAnnotation>)annotation
のObjective-Cは、大文字と小文字が区別されます。
まだメソッドが呼び出されない場合、もう1つの問題は、マップビューのdelegate
が設定されていないことです。コードではself
に設定するか、Interface BuilderでDelegateをFile's Ownerに添付します。
注釈を追加する前に注釈のtitle
を設定してください。そうしないと、注釈は表示されません。
上記の変更によりアクセサリボタンが表示されなくなります。
いくつかの他の無関係の提案... viewForAnnotation
で
、あなたはdequeueReusableAnnotationViewWithIdentifier
を呼び出すことによって、注釈ビューの再使用をサポートする必要があります。
- (MKAnnotationView *)mapView:(MKMapView *)sender viewForAnnotation:(id <MKAnnotation>)annotation
{
static NSString *reuseId = @"StandardPin";
MKPinAnnotationView *aView = (MKPinAnnotationView *)[sender
dequeueReusableAnnotationViewWithIdentifier:reuseId];
if (aView == nil)
{
aView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:reuseId] autorelease];
aView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
aView.canShowCallout = YES;
}
aView.annotation = annotation;
return aView;
}
プロジェクトは、ARCを使用している場合は、autorelease
を削除します。ところで
、calloutAccessoryControlTapped
デリゲートメソッドを実装、アクセサリボタン押しに対応する:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control
{
NSLog(@"accessory button tapped for annotation %@", view.annotation);
}
をあなたがしようとしたものを表示し、正確に何のエラーや問題、あなたが得ることができますか? – Anna