2017-01-24 80 views
2

蘋果的文件說:爲什麼NSApplication sharedApplication mainMenu返回nil?

所有菜單欄中的應用程序的菜單是由年代由應用程序在啓動時創建一個NSMenu 實例所擁有。您可以使用NSApplication方法mainMenu檢索此主菜單。

我有以下是我委託類來獲得應用程序的菜單:

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

爲什麼mainMenu零?我是否在錯誤的時間稱呼它?將[[NSApplication sharedApplication] mainMenu]放在我的視圖控制器的loadView中也會返回nil。

我想要做的就是將項目添加到應用程序菜單欄。

+1

你有什麼試圖對此進行調試?你是否創建了一個新項目並嘗試在那裏編碼?它對我來說是一個視圖控制器(沒有測試過applicationDidFinishLoading,但它也可以工作) – HAS

+1

@HAS你是對的,它適用於新的Cocoa應用程序項目我已將文件移動到新項目中 – user2070775

+0

很高興幫助: )如果您有時間並找到問題,請回答您自己的問題(也可以在bugreport.apple.com上提交錯誤報告)。謝謝! – HAS

回答

1

該代碼返回nil,因爲關聯的Storyboard沒有應用程序場景/菜單欄。

使用xcode創建一個新的Cocoa應用程序項目爲我構建了所有這些,我只需將我的文件移過來。上面的代碼現在按預期返回NSMenu。

相關問題