2012-04-19 76 views
0

我有一個在Mac OS 10.6.8上運行的可可應用程序 我在應用程序的Apple菜單中添加了一個條目,用於退出我的應用程序。該代碼是這樣的:在可可應用程序中退出應用程序菜單的問題

item = [menu addItemWithTitle: @"Quit Myapp" , NSLocalizedString(@"Quit", nil), applicationName] action:@selector(terminate:) keyEquivalent:@"q"];

[item setTarget:NSAPP];

現在,我的問題是,使用的NSOpenPanelrunModal被打開一個模式對話框時,該退出菜單項仍處於啓用狀態。其他菜單項像往常一樣被禁用。我無法理解爲什麼。

如果我更改上面的代碼,以便菜單項的目標不是NSApp,而是另一個可可對象,那麼問題就會消失。

有人請讓我知道,如果這是一個已知的問題。將NSApp設置爲菜單項的目標是錯誤的嗎?

回答

0

爲什麼不使用Interface Builder中的應用程序菜單?

+0

我有自己定製的類繼承自NSMenuItem。我以編程方式添加所有菜單項。 – Aarkan 2012-04-19 14:41:18

+0

你爲什麼要這樣做? – 2012-04-19 23:27:33

0

我同意其他人這樣做可能是一個壞主意。也就是說,設置(或離開)目標爲nil以鎖定響應者鏈。這可能會使模型窗口啓動時禁用它。

更新:

嗯。檢查一個新的MainMenu NIB,我發現Quit菜單項實際上是針對應用程序對象的。所以,這可能不是問題。

順便說一句,在上面的代碼片段中,您的目標是NSAPP,不管是什麼,而不是NSApp

此外,參數列表-addItemWithTitle:...都搞砸了,沒有任何意義。你應該清理你的問題以反映實際的代碼。