【问题标题】:Mac application About menu customisationMac 应用程序 关于菜单自定义
【发布时间】:2015-06-25 17:24:34
【问题描述】:

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

【问题讨论】:

    标签: objective-c macos


    【解决方案1】:

    看来你可以在你的MainMenu.xib里做,把菜单项About myApp的target-action改成你自定义的action。

    查看文档:

    跨 Nib 文件连接菜单项

    OS X 应用程序菜单栏中的项目通常需要交互 包含许多不同的对象,包括您的应用程序的文档 和窗户。问题是这些对象中的许多不能(或 不应该)直接从主 nib 文件访问。文件 主 nib 文件的所有者始终设置为 NSApplication 类。虽然你可以实例化一个 您的主 nib 文件中的自定义对象的数量,这样做很难 实际的或必要的。在文档对象的情况下,连接 直接到特定的文档对象甚至是不可能的,因为 文档对象的数量可以动态变化,甚至可以 零。

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

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

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

    消息传递固定对象是一个相对简单的过程, 通常最好通过应用程序委托来处理。这 应用程序委托对象协助 NSApplication 对象 运行应用程序,并且是少数正确的对象之一 属于主 nib 文件。如果菜单项指的是 应用程序级命令,您可以直接在 应用程序委托或只是让委托转发消息 到应用程序中其他地方的适当对象。

    如果你有一个菜单项作用于最前面的内容 窗口,您需要将菜单项链接到 First Responder 占位符对象。如果与菜单项关联的操作方法 特定于您的对象之一(而不是由 Cocoa 定义),您 必须先将该操作添加到 First Responder,然后再创建 连接。

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

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多