2011-10-28 17 views
12

マップアノテーションに正しいコールアウトアクセサリを追加する方法を教えてもらえますか?私が試したものはどこにもいないようだから、どんな助けもありがたい。右のコールアウトアクセサリのメソッドと実装

EDIT

私はこのコード行を試してみましたが、別のものは、注釈に起こりません。

- (MKAnnotationView *)mapview:(MKMapView *)sender viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
MKAnnotationView *aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@""]; 
aView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
aView.canShowCallout = YES; 
aView.annotation = annotation; 
return aView; 
} 
+0

をあなたがしようとしたものを表示し、正確に何のエラーや問題、あなたが得ることができますか? – Anna

答えて

34

メソッド名が間違っています。これは、資本VmapViewする必要があります:

- (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); 
} 
関連する問題