在很多项目上使用 validateMenuItem

Using validateMenuItem on lots of items

这是一个 best-practices 问题:

我有许多菜单项可以根据关联 NSTableView 中 selected 的行数进行切换。例如,只有当有两行 select 时才允许 "Connect ends",而不是零,不是一行,只有两行。

我的问题是如何在 validateMenuItem 中引用这些。我知道操作方法在 menuItem 中发送,并且我可以 select 在标题文本上。但是,当应用程序本地化时,这是否有效?我也可以使用标签,但标签在某些方面是 "non standard",而且很容易忘记设置它们。

那么 best/easiest-to-maintain 这个问题的解决方案是什么?

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

一种更安全的方法是访问 NSMenuItemaction,并将其与 @selector 文字

进行比较

像这样:

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