Solicitar un UIAlertView al usuario antes de volver al controlador anterior en una pila UINavigationController

Estoy tratando de solicitar un UIAlertView antes de navegar al controlador anterior y evitar la navegación si el usuario decide permanecer en el mismo controlador de vista. UtilizandoCCTBackButtonActionHelper, UIALertView se puede generar fácilmente, pero el único problema al que me enfrento es que cambia el color del botón de retroceso a gris al igual que cualquier control UIBarButton deshabilitado cuando se hace clic. Sin embargo, al hacer clic en cualquier lugar de la barra de navegación se restaura su color original.Entonces, ¿cómo podría evitar cambiar su color?

Así es como lo estoy haciendo ahora.

En CustomNavigationContoller.m

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item {
    BOOL should = [[CCTBackButtonActionHelper sharedInstance] navigationController:self navigationBar:navigationBar shouldPopItem:item];
    if (!should) {
        return NO;
    }
    return [super navigationBar:navigationBar shouldPopItem:item];
}

En CustomViewController.m

#pragma mark - Back button

- (void)cct_navigationBar:(UINavigationBar *)navigationBar willPopItem:(UINavigationItem *)item {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"Are you sure you want to go back?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
    [alertView show];
}

#pragma mark - Alert view delegate

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (alertView.cancelButtonIndex == buttonIndex) {
        return;
    }
    [self.navigationController popViewControllerAnimated:YES];
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta