cómo deshabilitar un elemento del botón de la barra de navegación en iOS
ios7 uinavigationbar (9)
Simplemente deshabilite su vista de UINavigationController
y la interacción de la barra de navegación:
self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationController.view.userInteractionEnabled = NO;
Y habilítelo cuando lo necesite de vuelta:
self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.view.userInteractionEnabled = YES;
He creado un controlador de navegación. En la segunda vista (que está presionada), tengo una llamada al servicio web y coloco una vista y ajuste de superposición
self.view.userInteractionEnabled = NO ;
Una vez que se complete la llamada al servicio web, estoy volviendo a
self.view.userInteractionEnabled = YES ;
Cuando hago esto, todos los demás botones excepto los de la barra de navegación están deshabilitados. ¿Cómo desactivar esos dos elementos del botón de la barra de navegación? (un botón similar al botón Atrás, que aparece para ver primero el controlador y otro botón que brinda información sobre la ayuda).
He intentado usar self.navigationItem.backBarButtonItem.enabled = NO
. Pero aún así puedo tocar el botón y puedo navegar a la primera pantalla. ¿Cómo puedo desactivar estos dos botones?
Prueba esto
Recomendado
self.navigationItem.leftBarButtonItem.enabled = NO;
self.navigationItem.rightBarButtonItem.enabled = NO;
O simplemente deshabilitar por
en caso Edge
self.view.window.userInteractionEnabled = NO;
Actualización: Recientemente, Apple no permite habilitar / deshabilitar el botón Atrás. En lugar de eso, podemos ocultarlo.
self.navigationItem.hidesBackButton = YES;
Puede hacer lo siguiente si se está ejecutando en Swift
self.navigationItem.rightBarButtonItem?.enabled = true
Este fragmento desactivará el botón.
Último Swift: para ocultar el botón Atrás, DEBES usar:
self.navigationItem.setHidesBackButton(true, animated: false)
Nota: Esto puede desencadenar un error en la barra de navegación que puede hacer que aparezca un artefacto en lugar de un botón oculto cuando se realiza la transición a una vista que no tiene un botón Atrás (o tiene un botón izquierdo en su lugar). El artefacto que aparece es elipsis "..." o el título del viewController anterior en la pila. Creo que este error está relacionado con el error documentado en el propio proyecto de código de muestra de Apple "CustomizingUINavigationBar", CustomBackButtonViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
}
prueba esto
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
esto detendrá al usuario a la interacción con la aplicación y después de la llamada al servicio escribe esto
UIApplication.sharedApplication (). EndIgnoringInteractionEvents ()
Seguro que esto ayudará.
Lo resolví simplemente agregando una propiedad a mi viewcontroller:
@property (nonatomic, strong) IBOutlet UIBarButtonItem * RightButton;
Luego lo conecté al botón en el guión gráfico. A continuación, puede configurar sus propiedades como:
self.RightButton.enabled=true;
Solución de una línea
self.navigationController?.view.isUserInteractionEnabled = false
Actualizado para Swift 3:
Si desea desactivar un elemento del botón de la barra de navegación O desea desactivar el agujero UINavigationBar, es decir, todos los elementos presentes en la barra de navegación, utilice las siguientes líneas de código;
// if you want disable
self.navigationController?.navigationBar.isUserInteractionEnabled = false
// if you want enable again
self.navigationController?.navigationBar.isUserInteractionEnabled = true
Disfruta ...!