Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 关于菜单定制的Mac应用程序_Objective C_Macos - Fatal编程技术网

Objective c 关于菜单定制的Mac应用程序

Objective c 关于菜单定制的Mac应用程序,objective-c,macos,Objective C,Macos,我正在做我的第一个mac应用程序。我已经添加了我的菜单和自定义菜单。我的问题是,我需要在about视图中进行一些定制。单击“关于”菜单时,将自动弹出一个视图,其中包含从应用程序plist获取的详细信息名称、图标、版权字符串、版本等。XCode应用程序中的“关于”菜单,其中有用于确认和许可协议的按钮。在chrome中,关于chrome将在网页中创建一个新选项卡,并显示详细信息。这怎么可能?感谢您的帮助 您似乎可以在主菜单中执行此操作。xib,将菜单项关于myApp的目标操作更改为自定义操作 见文件

我正在做我的第一个mac应用程序。我已经添加了我的菜单和自定义菜单。我的问题是,我需要在about视图中进行一些定制。单击“关于”菜单时,将自动弹出一个视图,其中包含从应用程序plist获取的详细信息名称、图标、版权字符串、版本等。XCode应用程序中的“关于”菜单,其中有用于确认和许可协议的按钮。在chrome中,关于chrome将在网页中创建一个新选项卡,并显示详细信息。这怎么可能?感谢您的帮助

您似乎可以在
主菜单中执行此操作。xib
,将菜单项
关于myApp
的目标操作更改为自定义操作

见文件:

跨Nib文件连接菜单项 OSX应用程序菜单栏中的项目通常需要交互 使用许多不同的对象,包括应用程序的文档 还有窗户。问题是这些对象中的许多无法(或 不应)直接从主nib文件访问。文件是 主nib文件的所有者始终设置为 非应用程序类。尽管您可能能够实例化 主nib文件中的自定义对象数,这样做很难实现 实际的或必要的。对于文档对象,连接 直接指向特定文档对象甚至是不可能的,因为 文档对象的数量可以动态更改,甚至可以更改 零

大多数菜单项都会将操作消息发送到以下对象之一:

  • 始终处理命令的固定对象

  • 动态对象,如文档或窗口

消息传递固定对象是一个相对简单的过程 通常最好通过应用程序委托来处理。这个 application delegate对象帮助NSApplication对象 正在运行应用程序,并且是为数不多的正确运行的对象之一 属于主nib文件。如果菜单项引用了 应用程序级命令,您可以直接在中实现该命令 应用程序委托或仅让委托转发消息 到应用程序中其他位置的适当对象

如果您的菜单项作用于最前面的 窗口中,您需要将菜单项链接到第一响应者 占位符对象。如果与菜单项关联的操作方法 特定于您的一个对象(不是由Cocoa定义的),您 必须将该操作添加到第一响应者,然后才能创建 连接

创建连接后,需要实现action方法 在自定义类中。该对象还应该实现 ValidateNuItem:在适当时间启用菜单项的方法。 有关响应程序链如何处理命令的更多信息, 请参阅Cocoa事件处理指南