我面临一个奇怪的情况。我有一个NSMenu
与其中的子菜单。子菜单的内容以编程方式填充。在我的validateMenuItem:
方法中,我可以看到所有正在检查的项目(父项目)以及子项目(一旦我点击子菜单),除了我的自动填充子菜单中的项目。validateMenuItem:不叫
这是为什么?难道我做错了什么?任何想法如何解决这个问题?
我面临一个奇怪的情况。我有一个NSMenu
与其中的子菜单。子菜单的内容以编程方式填充。在我的validateMenuItem:
方法中,我可以看到所有正在检查的项目(父项目)以及子项目(一旦我点击子菜单),除了我的自动填充子菜单中的项目。validateMenuItem:不叫
这是为什么?难道我做错了什么?任何想法如何解决这个问题?
下面是解:
可可查找在其中NSMenuItem
的动作选择器是类的validateMenuItem:
方法。
因此,如果您NSMenuItem
的动作选择(例如@selector(someSelector:)
)在SomeClass
实现,那么请确保您有一个SomeClass
方法validateMenuItem:
也一样,如果你想验证相应的菜单项。
这些菜单项正常运行,否则(即当你选择他们,他们触发他们的行动方法)? – trojanfoe 2013-03-03 10:27:43
@trojanfoe刚刚找到了答案(很简单,说实话...) - 我现在就发布它。 – 2013-03-03 10:30:29
@trojanfoe所有菜单项的操作都是在控制器中实现的,而一个特定的子菜单的子项操作不是。因此,'validateMenuItem:'方法不被调用。 (令人沮丧的...因为我在发帖前2小时还在努力挣扎(然后在10分钟后自己回答...大声笑)) – 2013-03-03 10:35:27