2011-03-09 700 views
7

Quiero realizar una acción cuando el usuario presionó el botón Atrás en mi UINavigationController cuando llegó a un cierto UIViewController.¿Cómo recibir notificaciones de una vista emergente en UINavigationController?

Desafortunadamente parece que UINavigationControllerDelegate no tiene ningún método para recibir notificaciones sobre la aparición de vistas.

Como solución alternativa ahora tengo en el método viewDidDisappear mi acción, que solo se activa cuando animated es . Esto funciona, pero es un poco feo.

¿Cómo debo hacer esto correctamente?

+0

uso viewWillDisappear por ur acción si quieres previamente saber –

Respuesta

0

Puede llamar a un método de delegado cuando viewWillDisappear o establecer la lógica en viewWillAppear para cierto UIViewController.

4

Si usted tiene una referencia al controlador abajo de la pila, el cual mostrará cuando éste está elevado, puede registrarse como delegado y comprobar que funciona a través

navigationController:willShowViewController:animated: 
14

La forma más popular de la manipulación un pop del controlador de vista de navegación (así como de modal) está implementando viewWillDisappear para su controlador de vista.

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    if (self.isMovingFromParentViewController || self.isBeingDismissed) { 
     // This view controller is being popped or dismissed 
    } 
} 
1

se puede observar a la UINavigationControllerDelegate y comprobar si se pasó transición:

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController 
         animated:(BOOL)animated 
    { 
     if([navigationController.viewControllers containsObject:self]) 
     { 
      NSLog(@"push"); 
     } 
     else 
     { 
      NSLog(@"pop"); 
     } 
    } 
+0

Si usted tiene un UITabBarController, se debe utilizar esta solución porque el viewWillDisappear se llama cada vez que cambia el índice de pestañas actual. – FouZ

Cuestiones relacionadas