【问题标题】:Enabling open file menu item in a non-document-based application在非基于文档的应用程序中启用打开文件菜单项
【发布时间】:2010-01-18 06:06:16
【问题描述】:

我想在非基于文档的应用程序中启用灰显的打开文件菜单项。基于文档的应用程序会自动为您提供一个漂亮的打开文件对话框,其中包含基于 plist 条目等的文件扩展名过滤器......当然,存在一种简单而优雅的方法来重新启用此功能。

我有……

  1. 在项目属性窗口中添加了文档类型
  2. 将我的控制器类分配为应用程序委托
  3. 将委托应用程序:openFile:添加到我的控制器类

【问题讨论】:

    标签: objective-c cocoa macos interface-builder


    【解决方案1】:

    关键是菜单项响应链中的某些东西必须响应-openDocument: 操作。通常是NSDocumentController。我会看看一个空的基于文档的应用程序是如何设置该菜单项的。

    【讨论】:

    • 它连接到 MainMenu.xib 中的第一响应者。它也应该如此连接到非基于文档的应用程序模板的 MainMenu.xib 中。如果没有,将其连接起来,然后进入响应者链并回复openDocument:
    【解决方案2】:

    首先,确保您的 File->Open 菜单项的选择器连接到 First Responder 的 openDocument: 操作。

    其次,确保您正在响应操作。看看Responder chain of a non-document application with an NSWindowController object。响应者链中的任何对象都可以响应消息,但最好选择最有能力和最合适的对象。一旦您决定了响应者链中的哪个类最适合处理消息,请将 openDocument: 操作添加到它的实现中并编写代码以相应地响应它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      相关资源
      最近更新 更多