2010-02-11 13 views
0

Je souhaite ajouter une nouvelle vue sur un bouton de vue d'accès à droite. J'ai actuellement la fonctionnalité pour laisser tomber une épingle sur la carte. Une légende (MKAnnotation) avec un titre, un sous-titre et un chevron se charge lorsque j'appuie sur l'épingle. Quand j'appuie sur le chevron (rightcalloutaccessoryview), je veux qu'une autre vue apparaisse montrant plus d'informations à ce stade. En ce moment, le robinet à chevrons ne fait rien. Voici ce que j'ai:Ajout d'une nouvelle vue sur le bouton d'accès rightcalloutaccessoryvoir

-(IBAction)showInfo:(id)sender 
{  
    int calloutButtonPressed = ((UIButton *)sender).tag; 
    if(calloutButtonPressed < 99999) 
    { 
      if(self.DetailView == nil) 
      { 
       DetailViewController *tmpViewController = [[UIViewController alloc] initWithNibName:@"DetailView" bundle:nil]; 
       self.DetailView = tmpViewController; 
       [tmpViewController release]; 
      } 

      if (calloutButtonPressed == 1) 
      { 
         // Using the debugger, I found that calloutButtonPressed is equal to 0 when the button is pressed. 
         // So I'm not sure what the point of this method is... 
       } 
      self.DetailView.title = @"Title"; 
    } 
} 

J'ai vérifié que cette méthode d'action est appelée après avoir appuyé sur le chevron. Malheureusement, je n'arrive pas à obtenir une nouvelle vue. Si quelqu'un sait ce que je fais mal, s'il vous plaît faites le moi savoir. Je suis dans un peu d'une pincée ...

Merci!

Thomas

Répondre

0
-(IBAction)showInfo:(id)sender 
{ 
    int calloutButtonPressed = ((UIButton *)sender).tag; 
    if(calloutButtonPressed < 99999) 
    { 
      if(self.detailView == nil) 
      { 
       DetailViewController *tmpViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
       self.detailView = tmpViewController; 
       [tmpViewController release]; 
      } 

      [self.navigationController pushViewController:self.detailView animated:YES]; 

      if (calloutButtonPressed == 0) 
      { 
       // TRP - I inserted my view atIndex:99999 to ensure that it gets placed in front of all windows 
       // TODO: figure a better way to do this 
       [self.view insertSubview:detailView.view atIndex:99999]; 
      } 
      self.detailView.title = @"Title"; 
    } 

} 

Il lui manquait cette seule déclaration:

[self.view insertSubview:detailView.view atIndex:99999]; 

Je voudrais trouver une autre façon, donc je ne pas avoir ce nombre magique (99999) là-bas (plus, il semble un peu immature ...). Je ne suis pas trop inquiet à ce sujet, parce que cela fonctionne bien.

J'ai reçu mon aide des forums Apple Developer, here.