在许多项

时间:2016-03-09 15:52:54

标签: cocoa nsmenuitem

这是一个最佳实践问题:

我有许多菜单项可根据相关NSTableView中选择的行数进行切换。例如,只有在选择了两行时才允许“连接结束”,而不是零,而不是一行,只有两行。

我的问题是如何在validateMenuItem中引用它们。我知道action方法在menuItem中发送,我可以选择标题文本。但是,当应用程序本地化时,这是否有效?我也可以使用标签,但标签在某些方面是“非标准的”,忘记设置它们太容易了。

那么这个问题最好/最容易维护的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

标题文字并不安全,正如您所说,因为无论出于何种原因它都可能会发生变化。

更安全的方法是访问NSMenuItem action,并将其与@selector字面值进行比较

像这样:

   if ( [menuItem action] == @selector(connectEnds:) )
   {
      //Do your check to figure if you should return YES/NO here to validate the menu item
   }