2014-09-17 10 views
5

ScenarioXcode: Rilevamento quando viene premuto un controller di navigazione implementato "pulsante Indietro"

Ho un app con un controller di navigazione. Quando il controller di navigazione spinge un altro controller in pila, nell'angolo in alto a sinistra dello schermo mostra il pulsante "<" (titolo dell'ultimo controller della vista) ".

Che cosa ho bisogno

Ho bisogno di qualcosa come (pseudo codice) ...

-(void)detectedBackButtonWasPushed { 

    NSLog(@"Back Button Pressed"); 

    //Do what I need done 

} 

Domanda

Perché questo pulsante è stato creato dal controller di navigazione e non ho creato questo pulsante negli storyboard, come faccio a ottenere il pulsante Indietro "collegato" a un metodo come questo?

esempi di ciò che Ive ha provato per Oleg

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"notification"]; 

    if (viewController == vc) { 

     NSLog(@"BACK BUTTON PRESSED"); 
    } 
} 

È questo come dovrei farlo? Perché questo non funziona.

risposta

4

Utilizzare viewWillDisappear per rilevare questo.

-(void) viewWillDisappear:(BOOL)animated 
{ 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) 
    { 
     [self backButtonPressed]; 
     [self.navigationController popViewControllerAnimated:NO]; 
    } 

    [super viewWillDisappear:animated]; 
} 

-(void)backButtonPressed 
{ 
    NSLog(@"YEA"); 
} 
+1

Negativo. Hai ragione, posso rilevare quando lo schermo scompare. Il problema è che ho delle funzionalità extra (nascondendo la barra delle schede nella parte inferiore) che deve accadere ** PRIMA ** lo schermo scompare. In caso contrario, la barra delle schede continuerà ad essere nascosta dopo la scomparsa dello schermo. Che distrugge la navigazione delle mie app. Come posso realizzare questo? –

+0

UINavigationControllerDelegate dai un'occhiata. E prova a usare - (void) navigationController: (UINavigationController *) navigationController willShowViewController: (UIViewController *) viewController animato: (BOOL) animato –

+0

Ok spiacente lo verifichi –

0

In precedenza, ho risolto questo impostando il navigationBar leftItem di essere un pulsante indietro con un selettore personalizzato che respinge la vista insieme a qualsiasi altra cosa di cui aveva bisogno di fare.

Potrei anche suggerire di guardare l'elemento del pulsante Indietro e aggiungere un obiettivo: il sé che viene chiamato al tocco.

Problemi correlati