2009-05-19 8 views
1

J'essaie (à partir de mon 3ème enfant dans l'heirachy) de charger la vue racine avec ce qui suit. Cela ne fonctionne pas et j'obtiens l'erreur suivante lorsque le code ci-dessous est exécuté.pushViewController débogage

-[DetailViewController clickButton:]: unrecognized selector sent to instance 0x1161e00' 

code:

MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView" bundle:[NSBundle mainBundle]]; 
     [self.navigationController pushViewController:dvController animated:YES]; 
     [dvController release]; 
     dvController = nil; 

Ce code exact même fonctionne sur d'autres points de vue, une idée de déboguer cela.

+0

Vous ne savez pas exactement quel est votre objectif final. Voulez-vous envoyer un message à une méthode sur le RootViewController? Ou voulez-vous afficher le RootViewController (par exemple, revenir au rootViewController)? – Jordan

+0

Essentiellement je veux revenir au rootViewController qui a une autre vue chargée dans cette vue. –

Répondre

1

Le code que vous avez écrit pour créer MapViewController et l'insérer dans la pile du contrôleur de vue est correct. L'erreur de sélecteur non reconnue indique que vous envoyez une tentative d'appel d'une méthode (nommée clickButton :) qui n'existe pas.

Je suspecterais une erreur d'orthographe. Je suppose que vous avez probablement un bouton défini qui appelle le code pour créer la nouvelle vue. La méthode devrait ressembler à ceci:

-(void) clickButton: (id) sender { 
    MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView" bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:dvController animated:YES]; 
    [dvController release]; 
    dvController = nil; 
} 

Je vérifierais que vous avez la partie ": (id) expéditeur". J'ai déjà fait l'erreur d'implémenter une méthode - (void) clickButton {}, mais le message envoyait aussi un paramètre.

+0

Désolé j'ai eu une faute de frappe mais toujours une erreur, voir le commentaire à poster ci-dessous. –

0
  1. Si vous avez créé le bouton et programatically définir la cible clickButton, assurez-vous que la méthode clickButton est présente

  2. La méthode clickButton (selon l'erreur) devrait prendre un argument. La définition de la méthode sera donc

    • (IBAction) clickButton: (id) expéditeur;
  3. Si vous avez dressé la carte IBAction à un événement IB, vous pouvez omettre le: (id) partie émetteur

  4. Pour charger le contrôleur de vue racine de toute vue dans une application de navigation, utiliser

    [[auto navigationController: popToRootViewControllerAnimated: YES];

+0

Désolé comme ci-dessus j'ai eu une faute de frappe dans le code. Si je sors tout le code maintenant et que j'ai un seul NSLog qui fonctionne et que je peux cliquer sur le bouton jusqu'à ce que mon cœur soit content. L'erreur que je reçois est maintenant ... *** Mettre fin à l'application du fait exception uncaught 'NSUnknownKeyException', raison: « [ setValue: forUndefinedKey:]: cette classe n'est pas valeur de clé de codage conforme pour l'activité cléIndicator. –

+1

Cela signifie que vous avez une variable IBOutlet appelée activityIndicator mais qu'elle n'est pas mappée à un contrôle dans le fichier nib – lostInTransit

+0

Merci mais je n'en ai pas dans le code de la vue actuelle ou de la NIB.Dans le MapView que j'essaye de charger ceci fait et qui a un IBOutlet comme cela fonctionne comme je commenceAnimating thatplace else! ??? Ok –