2012-11-22 23 views
2

我在我的引腳註釋中添加了詳細信息按鈕。我想去另一種觀點。當我點擊它時,下面的代碼不起作用。我不知道問題在哪裏。如何在點擊引腳註釋時顯示另一個視圖

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    MKPinAnnotationView *pinAnnotation = nil; 
    if(annotation != mapview.userLocation) 
    { 
     static NSString *defaultPinID = @"myPin"; 
     pinAnnotation = (MKPinAnnotationView *)[mapview dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; 
     if (pinAnnotation == nil) 
      pinAnnotation = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease]; 

     pinAnnotation.canShowCallout = YES; 

     //instatiate a detail-disclosure button and set it to appear on right side of annotation 
     UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
     pinAnnotation.rightCalloutAccessoryView = infoButton; 

    } 

    return pinAnnotation; 
} 

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

    if ([(UIButton*)control buttonType] == UIButtonTypeDetailDisclosure){ 
    annotationViewController *detailView=[[annotationViewController alloc] initWithNibName:@"annotationViewController" bundle:nil]; 

    [[self navigationController] pushViewController:detailView animated:YES]; 
    [detailView release]; 
} 
} 
+0

您是否設置了'MKMapViewDelegate'代表 –

+0

我做過mapview.delegate = self;在我的視圖控制器,但它給我警告 –

+0

分配id 從不匹配類型「viewController」 –

回答

1

方法- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control是委託方法。這就是爲什麼您需要將您的mapview的委託設置爲實現此方法的類(此處爲self),以便調用它。

您還需要告訴課程您正在實施MKMapViewDelegate方法。要做到這一點,在你.H,改變這一行:

@interface MyViewController : UIViewController 

要:

@interface MyViewController : UIViewController <MKMapViewDelegate> 

你的方法應該得到現在叫。

相關問題