2010-09-24 10 views
33

Tengo un UIBarButtonItem que simplemente no desea deshabilitar. Versión corta: cuando llamo aCómo deshabilitar UIBarButtonItem?

[myBarButtonItem setEnabled:NO]; 

No pasa nada.

myBarButtonItem es un IBOutlet en myVIewController. myViewController ha sido agregado como un objeto a MainWindow en Interface Builder. La toma myBarButtonItem se ha conectado al BarButtonItem y tiene las líneas correspondientes @syntesize y property establecidas.

@property (nonatomic, retain) IBOutlet UIBarButtonItem *myBarButtonItem; 

En myViewController.m,

@synthesize myBarButtonItem; 

Alguien tiene una idea de por qué la setEnabled método anterior no tiene ningún efecto? ¡Gracias!

ACTUALIZACIÓN: ¡Solucionado! No sé por qué, pero aparentemente la salida no estaba siendo establecida. Usé mi delegado de aplicación como el objeto principal para UIBarButtonItem, y todo funcionó.

+1

¿Ha hecho verificado en el depurador que 'myBarButtonItem' no es 'nil'? –

+0

¿Cómo ha declarado el campo de respaldo en la @interface? – toxaq

+0

¿Por qué tiene @synthesize myBarButtonItem; en su archivo de encabezado 'myViewController.h'. ¿No debería ser eso en su implementación? Creo que una vez que te muevas, debería arreglarlo. Soy nuevo en el desarrollo de iOS, pero cada vez que tengo una propiedad en el archivo de cabecera, el sintetizador correspondiente está en mi archivo .m (implementación). –

Respuesta

66

puede deshabilitar el botón de navegación izquierda desde el interior de un UIViewController como este, sin utilizar cualquier IBOutlet:

self.navigationItem.leftBarButtonItem.enabled = NO; 

Para desactivar el botón de navegación hacia la derecha:

self.navigationItem.rightBarButtonItem.enabled = NO; 

Swift3

self.navigationItem.rightBarButtonItem?.isEnabled = false 
+1

esta debería ser la respuesta correcta ahora. – jd291

12

Si su barra de herramientas tiene un IBOutlet (y que se haya registrado para asegurarse de que es no-nil), trate de:

[ [ [ myToolBar items ] objectAtIndex: myBarButtonItemIndex ] setEnabled:(NO) ]; 
1

En mi caso (Swift) que tenía 2 barButtonItems añaden como una matriz - por lo que los deshabilita esta resolvieron el problema

navigationItem.rightBarButtonItems?.first?.enabled = false 
    navigationItem.rightBarButtonItems?.last?.enabled = false 
Cuestiones relacionadas