2011-06-25 15 views
2

MKMapViewに表示されているコールアウトを変更したいと思います。私はselectAnnotationはコールアウトを表示しません

[self.mapView selectAnnotation:annotation animated:YES]; 

を呼び出すときには、注釈にマップをパンが、その吹き出しを表示しません。コールアウトを表示するにはどうすればよいですか?

答えて

2

アノテーションオブジェクトのtitle、およびオプションでsubtitleプロパティを設定します。 MapKitは自動的にコールアウトを表示します。

@interface MyAnnotation : NSObject <MKAnnotation> { 
    NSString *title; 
    NSString *subtitle; 
} 

@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *subtitle; 

@end 

と実装

#import "MyAnnotation.h" 

@implementation MyAnnotation 

@synthesize title, subtitle; 

@end 

使用法、

MyAnnotation *foo = [[MyAnnotation alloc] init]; 
foo.title = @"I am Foo"; 
foo.subtitle = "I am jus' a subtitle"; 
+0

(私の注釈があることに注意してください私のクラスはMKAnnotationをサブクラス化しています。タイトルのための私自身のゲッター。私はタイトルを設定する方法を提案しましたか? – user605957

+1

あなたのカスタムクラスは、プロトコル 'MKAnnotation'を実装する必要があります。クラスに 'title'と' subtitle'のプロパティを追加してください。完全な例を追加します。 – Anurag

0

あなたが実装する必要が動作しませんでしたMKAnnotationデリゲートメソッド

-(MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{ 
    static NSString *AnnotationViewIdentifier = @"AnnotationViewIdentifier"; 

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewIdentifier]; 
    if (annotationView == nil) 
    { 
     annotationView = [[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:AnnotationViewIdentifier]autorelease]; 
    } 

    annotationView.canShowCallout = YES; 

    return annotationView; 
} 
関連する問題