2015-10-26 2 views
0

Bonjour J'essaie de définir une image d'arrière-plan sur ma description détaillée UIButton attachée à ma vue de légende MapView MKAnnotation. En vérifiant sur stackoverflow il y a des exemples cohérents de la façon de définir ceci, cependant cela ne semble pas fonctionner pour ma légende UIButton. Ma question est la suivante: cela ne fonctionne-t-il pas, simplement à cause de la carte ou est-ce qu'il me manque autre chose? Voici mon code:Définition de l'arrière-plan sur UIButton sur la légende de la carte

// If an existing pin view was not available, create one. 
      pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"]; 
      pinView.canShowCallout = YES; 
      pinView.image = [UIImage imageNamed:@"Tch4"]; 
      //pinView.calloutOffset = CGPointMake(0, 32); 
      pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
      UIImage *btnImage = [UIImage imageNamed:@"4stars"]; 
      [pinView.rightCalloutAccessoryView setBackgroundImage:btnImage forState:UIControlStateNormal]; 

Je reçois l'erreur sur la dernière ligne. L'erreur est: Aucune interface Visable pour UIView déclare le sélecteur 'setbackgroundimage: forstate'

Merci pour votre aide avec ce

Répondre

1

Votre problème est rightCalloutAccessoryView retourne une instance UIView. Et UIView ne répond pas à la méthode setBackgroundImage:forState:.

Ce que vous cherchez est d'ajouter un UIButton plutôt quelque chose comme ceci:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
infoButton.frame = CGRectMake(0, 0, 32, 32); // Set your own frame 
[infoButton setBackgroundImage:btnImage forState:UIControlStateNormal]; 
[infoButton setBackgroundImage:btnImage forState:UIControlStateSelected]; 
pinView.rightCalloutAccessoryView = infoButton; 
0

vous cant définir l'image de fond si votre typebutton DetailDisclosure. vous pouvez addSubview image rightCalloutAccessoryView mais sans bouton ..

donc si vous utilisez encore typebutton DetailDisclosure vous ne pouvez pas définir fond