2010-07-26 4 views
6

J'ai un menu où certains éléments du menu utilisent des liaisons pour obtenir leur titre. Ces éléments sont toujours activés, et n'autorisent/ne désactivent pas automatiquement comme ils le devraient, ni déclenchent un appel à validateUserInterfaceItem :. Si vous supprimez la liaison sur le titre, cela recommence à fonctionner. Les éléments de menu ont la cible définie à zéro (premier répondeur). Si vous cliquez sur un, il exécute le sélecteur (action).Liaison d'un saut de titre de NSMenuItem Validation activée/désactivée

Bug? Que faire?

+1

Juste une note que c'est toujours le cas près de 5 ans plus tard. – DanielGibbs

+1

Et encore deux ans après cela. – matt

Répondre

4

Pour une raison quelconque, lorsque vous définissez le titre d'un élément de menu avec des liaisons, l'élément de menu devient activé même si la cible/action est nil.

Si vous souhaitez désactiver définitivement l'élément de menu que vous pouvez contourner ce en liant l'état de l'élément de menu enabled à une NO constante:

NSNumber *alwaysNo = [NSNumber numberWithBool:NO]; 
[menuItem bind:@"enabled" toObject:alwaysNo withKeyPath:@"boolValue" options:nil]; 

Notez que ce n'est pas la solution la plus élégante, mais dans mon le cas était encore plus propre que de ne pas utiliser de reliures pour le titre.