objective-c - 如何禁用 NSMenu 中某些 View 的项目?

标签 objective-c xcode macos

我有一个应用程序,其中三个 View 显示在同一窗口中。

当用户进入查看 1 时,我希望启用主菜单的某些项目,当用户进入查看 2 其他项目时,以及当进入查看 3 时,我希望禁用所有项目。

我该怎么做?

最佳答案

阅读非正式协议(protocol) NSMenuValidation 的文档:它说:此非正式协议(protocol)允许您的应用程序更新 NSMenuItem 对象的启用或禁用状态。它只声明了一种方法,validateMenuItem:因此,在 MenuItem 的目标对象中,您必须实现:

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
{
   // what is the item?
   NSLog( @"validate %@", [menuItem title] );   // useful for testing
   // return something like this:
   if( [ [menuItem title] isEqualToString:@"Show something"] ){
       return ! [view3 userIsHere];
   }
   return YES;
}

在此方法的文档中,您可以找到另一个示例。

关于objective-c - 如何禁用 NSMenu 中某些 View 的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557693/

相关文章:

ios - 为什么在Braintree手动集成上出现找不到“Braintree/BTUICTAControl.h”文件的错误?

macos - 是否可以在 macbook 上安装 CNTK?

php - 通过 NSURLRequest 将音频文件发布到 Web 服务器并将其取回的问题

ios - Swift BLE "didDiscoverServices"未执行。我错过了什么吗?

ios - 如何创建滚动静态图像的简单 ScrollView ?

objective-c - 将带有 URL 参数的 HTML 文件加载到 Cocoa(不是 iPhone)WebView 中

Cocoa内存编辑检查

iphone - UITableViewController 不使用 NSMutableArray 填充 TableView

ios - [[NSRunLoop currentRunLoop] runMode :* beforeDate:*]; 中的 BAD EXC

ios - Xcode 中的默认左花括号