【问题标题】:why does NSApplication sharedApplication mainMenu return nil?为什么 NSApplication sharedApplication mainMenu 返回 nil?
【发布时间】:2017-01-24 15:24:37
【问题描述】:

Apple 的文档说:

菜单栏中的所有应用程序菜单都归一个 NSMenu 所有 应用程序启动时创建的实例。你可以 使用 NSApplication 方法 mainMenu 检索此主菜单。

我的委托类中有以下内容来获取应用程序的菜单:

- (void)applicationDidFinishLaunching:(NSNotification *)notification{
  NSMenu *mainMenu=[[NSApplication sharedApplication] mainMenu];
}

为什么mainMenu 为零?我在错误的时间打电话吗?将 [[NSApplication sharedApplication] mainMenu] 放入我的视图控制器的 loadView 也返回 nil。

我要做的就是将项目添加到应用程序菜单栏。

【问题讨论】:

  • 您尝试过什么调试?您是否创建了一个新项目并尝试在那里编写代码?它从视图控制器为我工作(尚未测试 applicationDidFinishLoading 但它也应该工作。
  • @HAS 你是对的,它适用于新的 Cocoa 应用程序项目。我已将文件移至新项目!
  • 很高兴它有帮助 :) 如果您有时间并找到问题,请回答您自己的问题(并可能在 bugreport.apple.com 上提交错误报告)。谢谢!

标签: macos cocoa nsmenu nsapplication nsstoryboard


【解决方案1】:

代码返回 nil,因为关联的 Storyboard 没有应用程序场景/菜单栏。

使用 xcode 创建一个新的 Cocoa 应用程序项目为我构建了这一切,我只需要将我的文件移植过来。上面的代码现在按预期返回 NSMenu。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多