0

iOS MapKit を使用して地図上に注釈を表示するアプリを作成しています。ユーザーが注釈をタップすると、コールアウト ウィンドウがポップアップし、タイル、サブタイトル、詳細開示ボタンが表示されます。ユーザーが詳細開示ボタンをタップしたときに、追加情報をポップアップ表示する必要があります。

この追加情報は、ポップアップ ウィンドウまたは読み込まれるその他のビューである可能性があります。これを行う最善の方法を見つけようとしています。

現在、annotationView 実装ファイルで次のコードを使用して、詳細開示ボタンを追加しています。行に注意してくださいself.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]...そして、それが3つのannotationTypesに対して行われていることにも注意してください:

追加する場所は次のとおりです。

- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{

    iCodeBlogAnnotation *myAnnotation = (iCodeBlogAnnotation*)annotation;

    // setup the if/else statements

    if ([myAnnotation annotationType] == iCodeBlogAnnotationTypeHotels)

    {

        self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier];
        self.frame = CGRectMake(0, 0, kWidth, kHeight);
        self.backgroundColor = [UIColor clearColor];

        self.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];


        imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Hotel.png"]];
        imageView.frame = CGRectMake(kBorder, kBorder, kWidth - 2 * kBorder, kWidth - 2 * kBorder);
        [self addSubview:imageView];



    }

    else if([myAnnotation annotationType] == iCodeBlogAnnotationTypeAerialShots)

    {

        self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier];
        self.frame = CGRectMake(0, 0, kWidth, kHeight);
        self.backgroundColor = [UIColor clearColor];

         self.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];


        imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"StreetView.jpg"]];
        imageView.frame = CGRectMake(kBorder, kBorder, kWidth - 2 * kBorder, kWidth - 2 * kBorder);
        [self addSubview:imageView];



    }

    else if ([myAnnotation annotationType] == iCodeBlogAnnotationTypeStreets)

    {
        self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier];
        self.frame = CGRectMake(0, 0, kWidth, kHeight);
        self.backgroundColor = [UIColor clearColor];

        self.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];


        imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Street.png"]];
        imageView.frame = CGRectMake(kBorder, kBorder, kWidth - 2 * kBorder, kWidth - 2 * kBorder);
        [self addSubview:imageView];


    }

次に、viewController 実装ファイルに、ユーザーが詳細開示ボタンをタップしたことを検出する次のメソッドがあります。

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

{
    // add code here for what you want to do

}

詳細情報を保持する新しいポップアップ ウィンドウまたは新しいビューをロードするには、上記のメソッドにどのコードを追加する必要がありますか?

新規に detailedViewController クラスを作成し、上記の controllTapped メソッドの「ここにコードを追加」に次のコードを追加してみました。

iCodeBlogMapDetailViewController *dvc = [[iCodeBlogMapDetailViewController alloc] init];
[self.navigationController pushViewController:dvc animated:YES];

しかし、何も起こりません。

私の次のステップは何ですか?

ありがとうございました、

4

2 に答える 2

0

MKMapViewDelegateコントローラーが MKMapView のデリゲートを実装し、コントローラーに設定していることを確認してください。

于 2013-04-09T15:02:38.623 に答える