2012-09-03 64 views
2

我不知道爲什麼詳細披露按鈕沒有出現在mapkit標註上。這是我的代碼:沒有出現在mapkit標註上的詳細披露按鈕

我一定要在.h文件中包含 ,然後使用下列方法。標註起作用,並在地圖加載後顯示。我也確保將代理連接到Xib文件中。

- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    MKPinAnnotationView *mapPin = nil; 
    if(annotation != map.userLocation) 
    { 
     static NSString *defaultPinID = @"defaultPin"; 
     mapPin = (MKPinAnnotationView *)[map dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; 
     if (mapPin == nil) 
     { 
      mapPin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation 
                reuseIdentifier:defaultPinID]; 
      mapPin.canShowCallout = YES; 

      UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
      [disclosureButton addTarget:self action:@selector(clDetails:) forControlEvents:UIControlEventTouchUpInside]; 

      mapPin.rightCalloutAccessoryView = disclosureButton; 

     } 
     else 
      mapPin.annotation = annotation; 

    } 
    return mapPin; 
} 




    - (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    id<MKAnnotation> myAnnotation = [self.mapView.annotations objectAtIndex:0]; 
    [self.mapView selectAnnotation:myAnnotation animated:YES]; 
} 

感謝您的任何幫助。

回答

1

我在viewDidLoad中拋出了MKAnnotation方法。

mapView = [[MKMapView alloc]initWithFrame:self.view.bounds]; 

:)

1
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 

{// 如果它的用戶的位置,就返回nil。 if([annotation isKindOfClass:[MKUserLocation class]]) return nil;

// try to dequeue an existing pin view first 
static NSString* AnnotationIdentifier = @"AnnotationIdentifier"; 
MKPinAnnotationView* pinView = [[[MKPinAnnotationView alloc] 
           initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; 
pinView.animatesDrop = YES; 
pinView.canShowCallout = YES; 
pinView.draggable = NO; 
pinView.annotation = annotation; 
pinView.draggable = YES; 
pinView.enabled = YES; 
pinView.exclusiveTouch = YES; 
pinView.highlighted = YES; 
pinView.multipleTouchEnabled = YES; 
pinView.pinColor = MKPinAnnotationColorPurple; 
pinView.userInteractionEnabled = YES; 

//button on the right for popup for pins 
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[rightButton setTitle:annotation.title forState:UIControlStateNormal]; 
[rightButton addTarget:self 
       action:@selector(showDetails:) 
     forControlEvents:UIControlEventTouchUpInside]; 
pinView.rightCalloutAccessoryView = rightButton; 


//Create and add the right button to the callout 
rightCalloutButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[pinView setRightCalloutAccessoryView:rightButton]; 

    [self updateAnnotation]; 

    [self crawlViews]; 

//zoom button on the left of popup for pins 
UIButton* leftButton = [UIButton buttonWithType:UIButtonTypeContactAdd]; 
[leftButton setTitle:annotation.title forState:UIControlStateNormal]; 
[leftButton addTarget:self 
       action:@selector(zoomToLocation:) forControlEvents:UIControlEventTouchUpInside]; 
pinView.leftCalloutAccessoryView = leftButton; 

UIImageView *profileIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"profile.png"]]; 
pinView.leftCalloutAccessoryView = profileIconView; 
[profileIconView release]; 

return pinView; 

}

相關問題