2012-06-25 19 views
5

Me gustaría enlazar la propiedad booleana enabled de NSTextField con el estado de NSButton. Ya intenté agregar un NSValueTransformer personalizado que transforma el estado de NSButton en NSNumber. Sin embargo, en ese escenario, los campos de texto están deshabilitados todo el tiempo por algún motivo. Mi segundo enfoque: A los errores graves también desde NSValueTransformer no ofrece tipos de primitivas de retorno como BOOL.Cocoa: ¿Cómo vincular una propiedad booleana a NSCellStateValue?

Ejemplo:
La captura de pantalla muestra un ejemplo en el que los campos de texto se inhabilitan porque la casilla de verificación tiene el estado NSOnState. También me gustaría vincular las etiquetas a este estado.

Disabled text fields

Además, sería conveniente, si pudiera establecer un "texto discapacitados" en Interface Builder. En el ejemplo anterior, configuré el texto en la clase asociada.


Editar:

puse self.anonymousLoginCheckbox.state como el Modelo Ruta de la clave para la habilitado propiedad del campo de texto cuenta. Similar para el campo de texto de contraseña. Sin embargo, funciona no.

Interface Builder Binding


Actualización:

He creado una example project available on GitHub showing the implementation amablemente descrito por Nicolas BACHSCHMIDT.

Respuesta

13

NSButton no es compatible con KVO para la clave state. Los enlaces de cacao requieren que el objeto observado emita notificaciones cuando cambie la propiedad observada. Como NSButton's state es solo un contenedor para el método state, -[NSButton setState:] de su celda (y las notificaciones automáticas KVO) no se invoca cuando el usuario hace clic en el botón (pero -[NSCell setState:] es). Si configura la ruta de la clave del modelo a self.anonymousLoginCheckbox.cell.state, funcionará.

Cuestiones relacionadas