我正在做我的第一个mac应用程序。我添加了我的菜单和自定义。我的问题是我需要在about视图中进行一些自定义。点击about菜单时,会自动弹出一个视图,其中包含从应用程序plist中获取的详细信息Name,Icon,copyright string,version等。关于XCode应用程序中的菜单,该应用程序具有确认和被许可方协议的按钮。在Chrome中关于Chrome将在网页中创建一个新标签,并显示详细信息。这怎么可能?任何帮助表示赞赏。
答案 0 :(得分:0)
您似乎可以在MainMenu.xib
中执行此操作,将菜单项About myApp
的目标操作更改为自定义操作。
参见文档:
跨Nib文件连接菜单项
OS X应用程序菜单栏中的项目通常需要进行交互 包含许多不同的对象,包括应用程序的文档 和窗户。问题是许多这些对象不能(或 不应该直接从主nib文件访问。文件 主nib文件的所有者始终设置为的实例 NSApplication类。虽然你可能能够实例化一个 主nib文件中的自定义对象数量很少 实际或必要的。在文档对象的情况下,连接 直接到特定的文档对象是不可能的,因为 文档对象的数量可以动态改变甚至可以改变 零。
大多数菜单项会将操作消息发送到以下某个选项:
始终处理命令的固定对象
动态对象,例如文档或窗口
消息传递固定对象是一个相对简单的过程 通常最好通过应用程序委托处理。该 应用程序委托对象协助NSApplication对象 运行应用程序,是少数正确的对象之一 属于主nib文件。如果菜单项指的是 应用程序级命令,您可以直接在其中实现该命令 应用程序委托或只是让代理转发消息 到应用程序中其他地方的适当对象。
如果您有一个菜单项作用于最前面的内容 窗口,您需要将菜单项链接到First Responder 占位符对象。如果操作方法与菜单项关联 特定于你的一个对象(并没有由Cocoa定义),你 必须在创建之前将该操作添加到First Responder 连接。
创建连接后,您需要实现操作方法 在您的自定义类中。那个对象也应该实现 validateMenuItem:在适当的时间启用菜单项的方法。 有关响应程序链如何处理命令的更多信息, 请参阅Cocoa事件处理指南。