Cómo ocultar el botón de la barra de pestañas personalizado cuando hidesBottomBarWhenPushed es "TRUE"

Estoy usando el fragmento de código de Tito para agregar un botón personalizado a mi barra de pestañas:https://github.com/tciuro/CustomTabBar

(Subclasificando UITabbarController y agregando un botón personalizado usando

// .. created a UIButton *button
[self.view addSubview:button];

)

Esto funciona muy bien con mi aplicación basada en el guión gráfico, excepto en el caso de una subvista dentro de un controlador de navegación con la opción "Ocultar barra inferior al empujar" habilitada. Esto oculta la barra de pestañas según lo prometido, pero no el botón personalizado. ¿Parece que el botón debería agregarse como una subvista a la barra de pestañas? Probé este código feo que ni siquiera hizo aparecer el botón:

for(UIView *view in self.view.subviews)
{
    if([view isKindOfClass:[UITabBar class]])
    {
        [view addSubview:button];
        break;
    }
}

¿Algunas ideas?

ACTUALIZAR: Mi solución: en mi ApplicationDelegate defino los siguientes métodos, a los que llamo cuando es necesario en los métodos viewWillAppear o viewWillDisappear:

-(void)hideCenterButton:(BOOL)animated
{
    if(animated){

    [UIView animateWithDuration:0.3
                          delay:0.0f
                        options:UIViewAnimationCurveLinear
                     animations:^{
                         CGRect frame = self.centerButton.frame;
                         frame.origin.x = -100;
                         self.centerButton.frame = frame;
                     }
                     completion:^(BOOL finished){
                     }];
    }
}

-(void)showCenterButton:(BOOL)animated
{
    if(animated){

    [UIView animateWithDuration:0.35
                          delay:0.0f
                        options:UIViewAnimationCurveLinear
                     animations:^{
                         CGRect frame = self.centerButton.frame;
                         frame.origin.x = (self.view.superview.frame.size.width / 2) - (self.centerButton.frame.size.width / 2);
                         self.centerButton.frame = frame;
                     }
                     completion:^(BOOL finished){
                     }];
    }
}

Tuve que establecer la duración de la animación en 0,35 s para obtener un efecto suave en armonía con la barra de pestañas.

Respuestas a la pregunta(4)

Su respuesta a la pregunta