ios - sirven - UINavigationController y la acción del botón de retroceso
gestos iphone 7 (7)
Cree su propio UIBarButtonItem
y UIBarButtonItem
como leftBarButtonItem
en el método mainController
de mainController
.
Por ejemplo (aquí utilicé un elemento del sistema pero también puede crear uno diferente, vea la referencia de clase para más detalles).
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAlertView:)];
self.navigationItem.leftBarButtonItem = leftBarButtonItem;
// only if you don''t use ARC
// [leftBarButtonItem release];
dónde
- (void)showAlertView:(id)sender
{
// alert view here...
}
Tengo dos controllers
primero es self
y el segundo es el maincontroller
, donde estoy presionando el maincontroller
en la pila , por lo que el botón de retroceso viene automáticamente.
Aquí necesito hacer una alerta cuando el usuario presiona el botón Atrás.
¿Cómo puedo hacer esto?
O puede usar los métodos delegados de UINavigationController
. El método willShowViewController
se llama cuando se presiona el botón Atrás de su VC.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
Primero esconde el botón Atrás usando
self.navigationItem.hidesBackButton = YES;
y luego crea tu propio botón personalizado:
UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popAlertAction:)];
self.navigationItem.leftBarButtonItem=backBtn;
[backBtn release];
y tu selector está aquí:
- (void)popAlertAction:(UIBarButtonItem*)sender
{
//Do ur stuff for pop up
}
agregue un botón de retroceso personalizado con una acción y configure su alerta en ese método de acción. Puede agregar su botón Atrás personalizado desde aquí: http://www.applausible.com/blog/?p=401
crea un botón y aplica la acción del botón de la siguiente manera.
[self alert];
y cuando se muestra la alerta, después de tocar sobre sí
[self.navigationController popViewController];
después de este,
self.navigationController.LeftBarButton = myButton;
esto puede ayudar
La mejor y más fácil manera
Intenta poner esto en el controlador de vista donde deseas detectar la prensa:
-(void) viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
// back button was pressed. We know this is true because self is no longer
// in the navigation stack.
}
[super viewWillDisappear:animated];
}
viewControllerCount : es la var que contiene el número de viewControllers que anteriormente estaba en el UINavigationController. Luego, verificamos si viewControllerCount> [viewControllers count] si es así, sabemos que regresaremos (es decir, imitación del botón Atrás).
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
NSArray *viewControllers = [navigationController viewControllers];
if (viewControllerCount > [viewControllers count])
{
// your code
}
viewControllerCount = [viewControllers count];
}