Cómo capturar el método popViewControllerAnimated
/XinStar1/AZXTallyBook
La idea es interceptar popViewControllerAnimated creando una nueva categoría. No hay mucho que decir, solo codifíquelo directamente.
UIViewController backbuttonhandler . h
#Importar kit ltui/ui kit
@ protocolo BackButtonHandlerProtocol lt; @Optional
//Anula este método en la clase derivada UIViewController para manejar el clic en el botón "Atrás"
-(BOOL)navigationShouldPopOnBackButton;
@ end
@ interfaz controlador uiview(BackButtonHandler) lt; BackButtonHandlerProtocol gt
@end
controlador del botón Atrás del controlador uiview m
# import ". UIViewController backbuttonhandler . h "
@implementationUIViewController(BackButtonHandler)
@end
@implementation UINavigationController(ShouldPopOnBackButton)
- (BOOL) barra de navegación: (UINavigationBar *)la barra de navegación debería mostrar el elemento: (UINavigationItem *)item {
if([self . view controllers count] lt;[navigationBar.items count]) {
p >Devolver YES
}
BOOL deberíaPop = YES
controlador uiview * VC =[controlador de vista superior propio];
if([VC respondeToSelector: @ selector(navigationShouldPopOnBackButton)]){
debería aparecer =[VC NavigationShouldPopOnBackButton];
}
if (debería aparecer) {
dispatch_async(dispatch_get_main_queue(), ^{
[self popViewControllerAnimated: yes];
});
}De lo contrario{
//Solución alternativa para IO 7.1.
Gracias @bolivar - /posts/comments/34452906
for(ui view * subview in [subviews de la barra de navegación]){
if (0. lt subview. ampsubview. alpha lt1. ) {
[ui view animatewithduration: 25 animaciones: ^{
subview.alpha = 1. ;
}];
}
}
}
Devolver No;
}
@end
El modo de llamada es el siguiente
-(BOOL) En navegación debería aparecer el botón Atrás
{
//Otros métodos ejecutables
Devuelve SÍ
}