2013-08-06 2 views
6

Sto lavorando a un'app che utilizzerà la classe SWRevealViewController. L'app funziona fino a quel momento, in quanto sono in grado di toccare l'elemento del pulsante sulla barra sinistra per far uscire il controller della vista posteriore, ma quando aggiungo un indicatore di riconoscimento dei gesti nel mio controller della vista anteriore, SWRevealViewController è nullo. Non ho idea del perchè sia così ogni aiuto sarebbe apprezzato.SWRevealViewController è nullo quando si aggiunge il riconoscimento di gesture

//not nil here. 
SWRevealViewController *revealController = [self revealViewController]; 
//somehow it becomes nil on the very next line and from then on I can't hold the reference to it 
[self.navigationController.navigationBar addGestureRecognizer:[revealController panGestureRecognizer]]; 

UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"reveal-icon.png"] 
                    style:UIBarButtonItemStyleBordered target:revealController action:@selector(revealToggle:)]; 

risposta

1

Stai usando gli storyboard?

In tal caso, nel tuo prepareForSegue:, stai verificando che il tuo passaggio sia della classe SWRevealViewControllerSegue, come indicato di seguito?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue isKindOfClass: [SWRevealViewControllerSegue class]]) { 

     SWRevealViewControllerSegue* rvcs = (SWRevealViewControllerSegue*) segue; 

     SWRevealViewController* rvc = self.revealViewController; 

     rvcs.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) { 

     UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:dvc]; 
     [rvc setFrontViewController:nc animated:YES]; 
     }; 
    } 
} 

Ho appena risolto questo per il mio progetto e self.revealViewController era pari a zero quando stavo usando il metodo tradizionale [segue destinationViewController].

+0

Grazie per un suggerimento! Anche se nel mio caso è stata la transizione verso lo schermo sbagliato, questo ha fatto rompere un menu laterale. –