J'ai un nsmenuitem appelé historique qui réside dans un NSMenu appelé menu. Lorsque mon programme commence l'historique ne dispose pas d'un sous-menu, donc ses handicapés. Ensuite, à un moment donné, j'ai besoin d'un sous-menu pour l'histoire, alors je le crée, en faisant un sous-menu de l'histoire. Une flèche apparaît à côté de l'histoire qui me dit que le sous-menu est là. Mais l'histoire est toujours handicapée. J'ai essayé Setenabled mais ne fonctionne pas. S'il vous plaît aider. Ici, mon code:
Ceci est lorsque je crée mon menu, et l'historique que vous pouvez voir un nsmenuitem dans le menu. P> à ce stade, l'historique est désactivé (grisé en dehors).
Ensuite, quelque part dans le programme, je dois avoir un sous-menu pour l'histoire, donc: p> Je vois maintenant une flèche à côté de l'histoire, mais c'est toujours grisé. P> S'il vous plaît aider, j'ai essayé de comprendre cela pendant les 2 dernières heures. Merci. P> p>
3 Réponses :
Vous définissez la cible mais vous avez une action nulle. Essayez de ne pas régler la cible. Cela peut laisser cela activé tout le temps auquel cas vous pourriez avoir à activer ou désactiver manuellement l'élément de menu. P>
Voici la documentation sur la façon dont les éléments de menu être activé. p>
Merci, mais si je ne fais pas de méthode d'action? En fait, je n'ai même pas besoin de donner une cible, je ne sais pas pourquoi je l'ai là. Quoi qu'il en soit, je vais essayer ce que vous avez dit, merci pour l'aide.
Je devais remplacer la méthode code> validateemenuitem code> sur Il n'a pas réellement utilisé la méthode de validation tant que Définissez la cible sur soi-même si vous l'avez fait avec P> revenir true code>:
menu.addItemWithTitle("An Item", action: #selector(itemPressed), keyEquivalent: "")?.target = self
MacOS gérera automatiquement l'état code> activé code> basé automatiquement sur celui-ci. Donc, si vous définissez un action code>, vous devez également définir la cible de l'action.
@objc func press() {
print("pressed...")
}