Red de conocimiento informático - Material del sitio web - Cómo capturar el método popViewControllerAnimated

Cómo capturar el método popViewControllerAnimated

Si usa el leftBarButtonItem que viene con el sistema, necesita usar una imagen personalizada. Este método no es fácil de utilizar. Acabas de ver una solución publicada por un hermano en un libro breve. Pega el código aquí para ayudarte a comprenderlo intuitivamente. Dirección del proyecto:

/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Í

}