2009-04-07 12 views
5

Sto ottenendo un arresto da questa routine dopo aver aggiunto il mittente: (id) in modo da poter determinare quale pulsante lo ha chiamato. Quando impostato come semplice vecchio toggleView3 funziona perfettamente. L'arresto anomalo si verifica quando detailView viene ripristinato su 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

potresti pubblicare il codice che chiama toggleView3? – cobbal

risposta

13

Si sta inviando una visualizzazione del messaggio toggleView3 quando il nome corretto del selettore è toggleView3:, ovvero con due punti e un argomento. Possono sembrare simili a te, ma sono metodi totalmente differenti rispetto all'Obiettivo-C.

+0

Grazie Chuck. Ovvio, una volta che è indicato :) – Alan

2

Tale eccezione significa che l'applicazione sta chiamando toggleView3 senza il: argomento sender da qualche parte. Poiché il tuo nuovo metodo richiede un argomento, equivale a chiamare un metodo che non è mai esistito.

Se si esamina la traccia dello stack nel debugger, dovrebbe essere abbastanza chiaro da dove proviene. Probabilmente c'è anche un avvertimento nei risultati di compilazione.

Problemi correlati