2011-01-17 21 views
3

私のアプリケーションでは、ユーザーがマップ(標準ピン)で注釈をタッチすると、カスタム表示(ボタン付き)を表示します。 私はMKAnnotationViewをサブクラス化し、ピンのビューを変更できることを知っています。ユーザーがピンに触れると表示される追加情報ビューの外観を変更するにはどうすればよいですか(デフォルトではMKAnnotationオブジェクトのタイトルとサブタイトルが表示されます)。 どうすればいいですか?MapKitを使用して、ピンの注釈(注釈)にカスタムUIViewを表示する

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

答えて

4
- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id)annotation 
{ 
    MKPinAnnotationView *pinView = nil; 
    static NSString *defaultPinID = @"ReusedPin"; 
    pinView = (MKPinAnnotationView*)[mVdequeueReusableAnnotationViewWithIdentifier:defaultPinID]; 
    if (pinView == nil) 
     pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease]; 
    if (((PinAnnotationView*)annotation).tag == 0) 
    { 
     pinView.pinColor = MKPinAnnotationColorPurple; 
    } 
    else { 
     pinView.pinColor = MKPinAnnotationColorRed; 
    } 
    pinView.canShowCallout = YES; 
    pinView.animatesDrop = YES; 
    UIImageView *pinImageView = [[UIImageView alloc] initWithFrame:CGRectMake(-5, 0, 34, 34)]; 
    UIImage *pinImage = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"]]; 
    pinImageView.image = pinImage; 
    [pinImage release]; 
    [pinView addSubview:pinImageView]; 
    [pinImageView release]; 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    btn.tag = ((PinAnnotationView*)annotation).tag; 
    pinView.rightCalloutAccessoryView = btn; 
    return pinView; 
} 

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    if (control.tag !=0) { 
     ShowProviderDetailVC *viewControlle = [[ShowProviderDetailVC alloc]initWithNibName:@"ShowProviderDetailVC" bundle:nil]; 
     viewControlle.lastViewName = @"SearchView"; 
     for (NSMutableDictionary* dict in globalLocArray) { 
      if (control.tag ==[[dict valueForKey:@"ID"] intValue]) 
      { 
       viewControlle.providerInfoDict = dict; 
      } 
    } 
    [self.navigationController pushViewController:viewControlle animated:YES]; 
    [viewControlle release]; 
} 
+0

ありがとうございます。私は初心者ですし、私もrightCalloutAccessoryButtonについて知りませんでした。 –

関連する問題