2009-04-07 2 views
5

Je reçois un plantage de cette routine après avoir ajouté l'expéditeur: (id) afin que je puisse déterminer quel bouton l'a appelé. Lorsqu'il est configuré en tant que vieux toggleView3, il fonctionne parfaitement. L'incident se produit lorsque detailView est basculé vers docView.NSInvalidArgumentException

'NSInvalidArgumentException', reason: '*** -[RootViewController toggleView3]: unrecognized selector sent to instance 0x524a00' 2009-04-07 12:29:44.421 eTarot[11405:20b] Stack:

-(IBAction)toggleView3:(id)sender{ 


    if (detailViewController == nil) { 
     [self loadDetailViewController]; 
    } 

    UIView *docView = docViewController.view; 
    UIView *detailView = detailViewController.view; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1]; 
    [UIView setAnimationTransition:([docView superview] ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft) forView:self.view cache:YES]; 

    if ([docView superview] != nil) { 
     [detailViewController viewWillAppear:YES]; 
     [docViewController viewWillDisappear:YES]; 
     [docView removeFromSuperview]; 

     [self.view addSubview:detailView]; 
     [self.view insertSubview:detailNavigationBar aboveSubview:detailView]; 
     [docViewController viewDidDisappear:YES]; 
     [detailViewController viewDidAppear:YES]; 

    } else { 
     [docViewController viewWillAppear:YES]; 
     [detailViewController viewWillDisappear:YES]; 
     [detailView removeFromSuperview]; 
     [detailNavigationBar removeFromSuperview]; 
     [self.view addSubview:docView]; 
     [detailViewController viewDidDisappear:YES]; 
     [docViewController viewDidAppear:YES]; 
    } 
    [UIView commitAnimations]; 
} 
+0

pourriez-vous poster le code qui appelle toggleView3? – cobbal

Répondre

13

Vous envoyez une vue le message toggleView3 lorsque le nom correct du sélecteur est toggleView3: - c'est-à-dire, avec un deux-points et un argument. Ils peuvent vous ressembler, mais ce sont des méthodes totalement différentes de Objective-C.

+0

Merci Chuck. Évident, une fois qu'il est souligné :) – Alan

2

Cette exception signifie que votre application appelle toggleView3 sans: l'argument de l'expéditeur quelque part. Puisque votre nouvelle méthode nécessite un argument, c'est la même chose que d'appeler une méthode qui n'a jamais existé.

Si vous parcourez la trace de la pile dans le débogueur, il devrait être assez clair d'où il vient. Il y a probablement un avertissement dans les résultats de construction, aussi.